MS SQL / Express
шал, что «каждый» использует параметризованные 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
Есть ли другие преимущества использования параметризованных запросов помимо соображений безопасности?
Обновление: эта замечательная статья была включена в один из вопросов от Grotok.http://www.sommarskog.se/dynamic_sql.html