Как я могу сделать подготовленное заявление в классическом ASP, что предотвращает инъекции SQL? - PullRequest
3 голосов
/ 16 декабря 2011

У меня есть это, которое работает:

sqlString = "SELECT * FROM employees WHERE lastname = '" & last_name & "'"
Set cmd = Server.CreateObject("ADODB.Command")
Set cmd.ActiveConnection = dbConn
cmd.CommandText = sqlString
cmd.Prepared = True
Set recs = cmd.Execute

У меня проблема в том, что над динамической частью sqlString перед подготовленной командой оператора.Я не думаю, что то, что я имею выше, защищает меня.

Разве мне не нужно исправлять эту sqlString, прежде чем я сделаю подготовленное утверждение?Прочитав это, я подумал, что: Как подготовленные операторы могут защитить от атак с использованием SQL-инъекций? :

"Хотя в случае подготовленных операторов мы не изменяем нашу программу, она остается неизменной.точка.

Сначала мы отправляем программу на сервер

 $db->prepare("SELECT * FROM users where id=?");

, где данные заменяются некоторой переменной, называемой "заполнитель", а затем мы отправляем данные отдельно:

 $db->execute($data);

Итак, она не может изменить нашу программу и причинить какой-либо вред. Довольно просто - не так ли? "

Но я не знаю, как сделать мой запрос правильным.Я также не знаю, как он добрался с prepare до $data.В надежде на руководство.Спасибо.

Ответы [ 3 ]

10 голосов
/ 16 декабря 2011

Почему бы не использовать параметры команды ADO?

var oCmd = Server.CreateObject("ADODB.Command");
oCmd.CommandText = "SELECT * FROM employees WHERE lastname = ?";
oCmd.Parameters.Append(oCmd.CreateParameter(undefined,202, 1, 50,"last name"))//adVarWChar
0 голосов
/ 17 декабря 2011

Самым простым является использование хранимых процедур в SQL и использование команд таким образом. В противном случае вам необходимо исключить определенные символы, собираемые из объекта Request, такие как одинарные кавычки и двойные дефисы и т. Д.

0 голосов
/ 16 декабря 2011

Вот хороший блог о том, как предотвратить инъекцию sql с помощью классического asp.

http://blogs.iis.net/nazim/archive/2008/04/28/filtering-sql-injection-from-classic-asp.aspx

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