DGKumar Ответов: 2

Как предотвратить SQL inject для прямых команд SQL в ASP.NET для базы данных oracle


Я всегда получаю разные команды выбора из пользовательского интерфейса через текстовое поле.
Экс: string queries = "select name from employe; select id from dept";

внутренняя логика
for (int i=0; i < queries.Length; i++)
{
    OracleCommand cmd = new OracleCommand(queries[i].ToString(), con);
    OracleAdapter oda = new OracleDataAdapter(cmd);
    oda.fill(ds,queries[i]);
}

Он работает нормально, но при проверке этой галочки возникает проблема с sql-инъекцией.
Не могли бы вы помочь в этом, как исправить тип сценария.

Примечание: здесь нет Области применения storeprocedure.

Что я уже пробовал:

for (int i=0; i < queries.Length; i++)
{
    racleCommand cmd=new OracleCommand(queries[i].ToString(), con);
    OracleAdapter oda= new OracleDAtaAdapter(cmd);
    oda.Fill(ds, queries[i]);
}

2 Ответов

Рейтинг:
2

Simon_Whale

Прочтите об этом, есть раздел о переменных привязки, который должен помочь вам начать работу

Получение и обновление данных с помощью Oracle Data Provider for .NET[^]


DGKumar

В этих командах нет никаких параметров и предложения where

Simon_Whale

это находится в разделе "Получение данных с помощью переменных привязки:" в пункте 6

строка sql = "select department_name from departments where department_id =" +
":department_id";
OracleCommand cmd = новая команда OracleCommand(sql, conn);
УМК.Свойство Commandtype = Значение Commandtype.Текст;
OracleParameter p_department_id = новый OracleParameter();
p_department_id.OracleDbType = OracleDbType.Десятичный;
p_department_id.Значение = поле DepartmentID.Текст;
cmd.Parameters.Add(p_department_id);

OracleDataReader dr = cmd.Метода executereader();
др.Читать();

отделы.Предметы.Add(dr.GetString(0));

Рейтинг:
1

Patrice T

Цитата:
Как предотвратить SQL inject для прямых команд SQL в ASP.NET для базы данных oracle

Как я понимаю ваш вопрос, пользовательский ввод-это непосредственно команда SQL.
Таким образом, по вашему замыслу, нет никакой инъекции, чтобы предотвратить, так как пользователь вводит непосредственно команды, которые он хочет.
Ex: string queries = "select name from employe; drop employe";

SQL-инъекция-это только тогда, когда пользователь вводит параметры типа, позволяя пользователю вводить непосредственно команды, вы далеко выходите за их пределы.

SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]