У меня есть это, которое работает:
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
.В надежде на руководство.Спасибо.