SQL Server параметризовал SQL-запрос - мне все еще нужно скрывать кавычки? [Дубликат]

На этот вопрос уже есть ответ:

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

string sql = "SELECT * FROM SomeTable WHERE Field=@ParamValue";

using (SqlConnection conn = new SqlConnection())
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
    cmd.Parameters.Add(new SqlParameter("ParamValue", someValue));
    da.Fill(ds);
}

Является ли это использование параметризованного запроса достаточным для обеспечения безопасности от SQL-инъекции или мне нужно someValueсначала сбрасывать кавычки , прежде чем передавать его в качестве параметра?

c#,sql,sql-server,security,sql-injection,

0

Ответов: 1


2 принят

Нет, вам не нужно скрывать цитаты. Когда вы выполняете SQLCommand с использованием SQLParameters, параметры никогда не вставляются непосредственно в инструкцию.

Вместо этого вызывается системная хранимая процедура sp_executesql и задается строка SQL и массив параметров (протокол TDS).

Параметры изолированы и обрабатываются как данные. Это смягчает проблемы SQL-инъекций и предоставляет другие преимущества, такие как сильная типизация и улучшенная производительность.

C #, SQL, SQL-сервер, безопасность, SQL-инъекции,
Похожие вопросы