Инъекция запросов в .NET - PullRequest
4 голосов
/ 27 июля 2010

Безопасны ли параметры Parametrize в .NET от SQL Inject? То есть .NET автоматически экранирует опасные символы при использовании параметров?

Ответы [ 3 ]

12 голосов
/ 27 июля 2010

Когда вы используете параметры, они, как правило, не отправляются в виде текста.Они могут использовать собственный проводной протокол для базы данных.Если параметр сам является текстовым параметром, то он обычно инкапсулируется соответствующим образом в протоколе, чтобы база данных знала, что это параметр, а не SQL.

Хотя я полагаю, что поставщик может простопреобразовать параметры в полный оператор SQL, это был бы ужасный способ сделать что-либо.

Так что, в основном, «да» - параметризованные запросы эффективно защищены от атак внедрения SQL, если вы не сохранилипроцедуры, динамически выполняющие ваши параметры как SQL и т. д.

2 голосов
/ 27 июля 2010

Когда вы используете параметры, SQL-клиент .Net отправит значения параметров на SQL-сервер в необработанном потоке TDS.

Однако это не защитит вас от плохого SQL.
Если ваши вызовы SQLEXECUTE со строкой, содержащей объединенный параметр, вы все равно будете уязвимы.

0 голосов
/ 27 июля 2010

Что касается строковых значений, то да. - .NET будет избегать их для вас, что вы можете увидеть, пытаясь найти значения в таблице, например "--comment", которая может нарушить каскадный оператор, но которая работает спараметризованный запрос.

Однако, как утверждает Джон, такие вещи, как числа и даты, будут отправляться в их собственном формате, который еще безопаснее / быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...