Очистить строку поиска для динамических запросов SQL - PullRequest
1 голос
/ 27 октября 2009

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

В моем динамическом sql-запросе я хотел бы найти строку текста в 2 столбцах в одной из моих таблиц, но до того, как это произойдет, я бы хотел, чтобы мой бизнес-уровень, написанный на c #, очистил входные данные. Мне бы хотелось, чтобы на входе были специальные символы (т. Е. #,!, $ И т. Д.). Какой минимальный набор символов мне нужно вычеркнуть в строке поиска, чтобы очистить его? Я думаю, что вычеркнуть одинарные и двойные кавычки достаточно. Это правильно?

Спасибо

Ответы [ 4 ]

3 голосов
/ 27 октября 2009

Вам не нужно использовать хранимые процедуры, чтобы быть в безопасности. (Фактически, хранимые процедуры не обязательно гарантируют безопасность от атак внедрения, если сами хранимые процедуры создают динамические запросы.) А ручное экранирование трудно выполнить на 100% безопасно и не рекомендуется.

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

1 голос
/ 27 октября 2009

Если вы используете хранимые процедуры или параметризованные операторы, вам не нужно ничего дезинфицировать, если вы не строите строки вслепую в динамическом SQL внутри процедуры. Если это так, пожалуйста, прочитайте отличную статью Эрланда о динамическом SQL:

http://sommarskog.se/dynamic_sql.html

1 голос
/ 27 октября 2009

Также начинаются определенные точки с запятой для остановки последующих операторов (необходимо, но не достаточно)

0 голосов
/ 27 октября 2009

Вы приближаетесь к этому с небезопасного направления. Вы хотите определить набор символов, которые должны быть разрешены (проверка того, что они не особенные и т. Д.), А затем удалить все, что не входит в этот набор.

Возможно, вам следует также рассмотреть SqlCommand s как более безопасный способ построения строки, отправляемой в БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...