Charrlay Ответов: 2

Как предотвратить SQL-инъекцию с помощью этого метода


У меня уже есть параметризованный хранимый процесс.

Я хочу знать, как бы я предотвратил ввод одинарных кавычек или sql-операторов типа "select..." в текстовое поле.

В настоящее время это мой процесс, я "редактирую верхние 200 строк таблицы" в sql и вставляю "select * From Table", а затем эта строка заполняет текстовое поле при запуске страницы. Я хочу заменить "select" на пустое место или "hello".

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

Я уже пробовал это текстовое поле.Нижестоящим().Заменить("Выберите","").Заменить("'",""");

MadMyche

Если ваша хранимая процедура не использует динамический SQL, то при использовании параметров беспокоиться не о чем.
Не могли бы вы поделиться SP-кодом для ознакомления?

2 Ответов

Рейтинг:
2

Patrice T

Цитата:
Я хочу знать, как бы я предотвратил ввод одинарных кавычек или sql-операторов типа "select..." в текстовое поле.

Вам это не нужно, если сохраненный процесс выполнен правильно. Но вы не показали этот сохраненный proc.

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


Charrlay

Вам не нужно видеть sp. Предположим, что это сделано правильно.

Рейтинг:
0

ZurdoDev

В своем коде вы также должны использовать параметры. Например

...
using (SqlCommand cmd = new SqlCommand("SP_Name", sqlCon){
  ...
  cmd.Parameters.AddWithValue ("@param1", textField1.Text);
...
}


Теоретически этого достаточно для предотвращения sql-инъекций. Если вы хотите пойти дальше, вы можете заменить известные ключевые слова или проверить наличие определенных диапазонов значений в зависимости от ваших данных.


Charrlay

Спасибо за Ваш быстрый ответ, но я также реализовал это в своем коде.

ZurdoDev

Тогда это все, что вам нужно.

Maciej Los

5ed!