Я проповедовал и моим коллегам, и здесь, в SO, о правильности использования параметров в запросах SQL, особенно в приложениях .NET. Я даже зашел так далеко, что обещал им защиту от атак SQL-инъекций.
Но я начинаю задумываться, правда ли это на самом деле. Существуют ли какие-либо известные атаки SQL-инъекций, которые будут успешными в отношении параметризованного запроса? Например, вы можете отправить строку, которая вызывает переполнение буфера на сервере?
Есть, конечно, и другие соображения, чтобы гарантировать безопасность веб-приложения (например, очистка пользовательского ввода и все такое), но теперь я думаю о внедрении SQL. Я особенно заинтересован в атаках на MsSQL 2005 и 2008, поскольку они являются моими основными базами данных, но все базы данных интересны.
Изменить: чтобы уточнить, что я имею в виду под параметрами и параметризованными запросами. Используя параметры, я имею в виду использование «переменных» вместо построения запроса SQL в строке.
Поэтому вместо этого:
SELECT * FROM Table WHERE Name = 'a name'
Мы делаем это:
SELECT * FROM Table WHERE Name = @Name
и затем установите значение параметра @Name для объекта запроса / команды.