Я проповідував як своїм колегам, так і тут на тему SO про користь використання параметрів у запитах SQL, особливо у програмах .NET. Я навіть зайшов так далеко, що пообіцяв їм надати імунітет проти атак SQL-ін'єкцій.
Але я починаю гадати, чи справді це правда. Чи існують відомі атаки введення SQL, які будуть успішними щодо параметризованого запиту? Чи можете ви, наприклад, надіслати рядок, який викликає переповнення буфера на сервері?
Звичайно, є й інші міркування, щоб переконатися, що веб-програма є безпечною (наприклад, дезінфікує введення користувача та інше), але зараз я думаю про ін’єкції SQL. Мене особливо цікавлять атаки на MsSQL 2005 та 2008, оскільки вони є моїми основними базами даних, але всі бази даних цікаві.
Редагувати: Щоб пояснити, що я маю на увазі під параметрами та параметризованими запитами. Використовуючи параметри, я маю на увазі використання "змінних" замість побудови запиту sql у рядку.
Отже, замість цього:
SELECT * FROM Table WHERE Name = 'a name'
Ми робимо це:
SELECT * FROM Table WHERE Name = @Name
а потім встановіть значення параметра @Name на об'єкт запиту / команди.