Я слышал, что "каждый" использует параметризованные SQL-запросы для защиты от атак SQL-инъекций без необходимости выполнять все части пользовательского ввода.
Как вы это делаете? Получаете ли вы это автоматически при использовании хранимых процедур?
Итак, мое понимание не параметризуется:
cmdText = String.Format("SELECT foo FROM bar WHERE baz = '{0}'", fuz)
Будет ли это параметризоваться?
cmdText = String.Format("EXEC foo_from_baz '{0}'", fuz)
Или мне нужно сделать что-то более обширное, как это, чтобы защитить себя от SQL-инъекции?
With command
.Parameters.Count = 1
.Parameters.Item(0).ParameterName = "@baz"
.Parameters.Item(0).Value = fuz
End With
Существуют ли другие преимущества использования параметризованных запросов помимо соображений безопасности?
Обновление: эта замечательная статья была связана в одном из вопросов, заданных Гротоком. http://www.sommarskog.se/dynamic_sql.html