2013-03-30 2 views
4

У меня есть хранимая процедура, которая будет возвращать результаты поиска в зависимости от того, что пользователь набрал в текстовое поле стандартного поиска. После нажатия ввода в окне поиска я передаю запрос в search.aspx? Q = независимо от введенного пользователем.SQL Injection в запросе хранимой процедуры

search.aspx имеет SqlDataSource, который принимает строку запроса и вызывает В параметре хранимой процедуры, которая соединяет несколько таблиц и содержит следующие пункты, где ...

where (description like '%' + @query + '%' or title like '%' + @query + '%' or  calls.call_id like @query or r.firstname = @query or r.lastname = @query 
or n.note like '%' + @query + '%') 

... это SQL-инъекции безопасно т.е. использование таких параметров?

Спасибо,

+0

Нет, это НЕ, если он находится вдали от безопасности. – ljh

+0

Хорошая работа, которую я задал тогда! рекомендовать что-нибудь? – thegunner

+0

@ ljh вы бы хотели уточнить? Запрос выполняет дезинфекцию ввода с использованием параметров. Это выглядит безопасно для меня. – Dan

ответ

3

Нет, это не восприимчив к инъекции SQL, поскольку он использует параметры SQL. Скажем, кто-то пытался выполнить SQL injection, предоставляя в качестве значения для @query:

'; DROP TABLE STUDENTS;

Вы по-прежнему безопасны с кодом предоставленной вами, потому что запрос все твое, за исключением параметра, который не является SQL; это строка. Даже если строка содержит SQL, она никогда не выполняется, если ваша хранимая процедура фактически не является executed. Никогда не делайте этого (если у вас нет действительно веских оснований (но даже тогда вы, вероятно, должны сначала перепроектировать)). SQL-инъекцию можно легко избежать, просто используя параметры для дезинфекции ввода пользователя.

+0

Хорошо, привет, @ Dan! – thegunner

+2

ahhh, правильно, это должно быть динамическое sql (например, 'exec (@query)') – didierc

+1

, даже если вы должны были использовать динамический SQL внутри SP, а затем выполнить sql-строку с помощью «sp_executesql» и передать ей параметры. – highwingers

Смежные вопросы