OriginalGriff
Этот оператор SELECT (и, следовательно, хранимая процедура) не уязвим для SQL-инъекции, поскольку он вообще не использует никаких строк, а тем более тех, которые могут содержать вредный материал. Все, что он делает, это выбирает все столбцы и все строки из таблицы; everythign фиксируется заранее.
Когда вы объединяете строки, вы вызываете проблемы, потому что SQL получает такие команды, как:
SELECT * FROM MyTable WHERE StreetAddress = 'Baker's Wood'
Цитата, добавленная пользователем, завершает строку в том, что касается SQL, и вы получаете проблемы. Но могло быть и хуже. Если я приду и наберу вместо этого: "x';DROP TABLE MyTable;--", то SQL получит совсем другую команду:
SELECT * FROM MyTable WHERE StreetAddress = 'x';DROP TABLE MyTable;--'
Которые SQL видит как три отдельные команды:
SELECT * FROM MyTable WHERE StreetAddress = 'x';
Совершенно правильный выбор
DROP TABLE MyTable;
Вполне допустимая команда "удалить таблицу"
--'
А все остальное-это комментарии.
Так оно и происходит: выбирает любые совпадающие строки, удаляет таблицу из базы данных и игнорирует все остальное.
Таким образом, вы уязвимы только тогда, когда вы объединяете строки, и вы этого не делаете вообще!
Member 14479161
это означает, что если я объединяю a select statment со значением, которое приходит из текстового поля с помощью'+', то это может быть сделано для SQL Injectio in asp.net