1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/siteserver-cms

 / Детали:

Указанный содержательный список представляет риск SQL-инъекции.

Предстоит сделать
Владелец
Создано  
27.02.2025
public async Task<bool> IsTableExistsAsync(string tableName)
{
    bool exists;
    string databaseName = DatabaseName;

    try
    {
        if (DatabaseType == DatabaseType.SQLite)
        {
            string sql = $"SELECT count(*) FROM sqlite_master WHERE type='table' AND name='{tableName}'";

            using var connection = GetConnection();
            exists = await connection.ExecuteScalarAsync<int>(sql) == 1;
        }
        else if (DatabaseType == DatabaseType.PostgreSQL || DatabaseType == DatabaseType.SQLServer)
        {
            string sql = $"SELECT COUNT(*) FROM information_schema.tables WHERE table_catalog = '{databaseName}' AND table_name = '{tableName}'";

            using var connection = GetConnection();
            exists = await connection.ExecuteScalarAsync<int>(sql) == 1;
        }
        else
        {
            string sql = $"SELECT COUNT(*) FROM information_schema.tables WHERE (table_schema = '{databaseName}') AND table_name = '{tableName}'";

            using var connection = GetConnection();
            exists = await connection.ExecuteScalarAsync<int>(sql) == 1;
        }
    }
    catch
    {
        try
        {
            string sql = $"select 1 from {tableName} where 1 = 0";

            using var connection = GetConnection();
            exists = await connection.ExecuteScalarAsync<int>(sql) == 1;
        }
        catch
        {
            exists = false;
        }
    }

    return exists;
}

Комментарий (0)

GitLife Service Account Задача создана

Вход Перед тем как оставить комментарий

Статус
Ответственный
Контрольная точка
Pull Requests
Связанные запросы на слияние могут быть закрыты после их объединения
Ветки
Дата начала   -   Крайний срок
-
Закрепить/Открепить
Приоритет
Участники(1)
1
https://api.gitlife.ru/oschina-mirror/siteserver-cms.git
git@api.gitlife.ru:oschina-mirror/siteserver-cms.git
oschina-mirror
siteserver-cms
siteserver-cms