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