Это ключ к пониманию инъекции SQL-кода и к тому, как с ней бороться: внедрение SQL-кода работает, изменяя синтаксис SQL-оператора, прежде чем тот будет синтаксически проанализирован. Пока вы вставляете динамические блоки в оператор перед синтаксическим анализом, у вас есть риск инъекции SQL-кода.
Мы уже видели, что невозможно ввести разделенную запятыми строку в един-
ственный параметр. Необходимо использовать столько параметров, каково число
элементов в вашем списке.
Например, скажем, вам необходимо запросить шесть ошибок при помощи их первичных ключей, которые находятся в переменной $bug_list массива:
$sql = "SELECT * FROM Bugs WHERE bug_id IN (?, ?, ?, ?, ?, ?)"); $stmt = $pdo->prepare($sql); $stmt->execute($bug_list);
Это работает, только если у вас есть точно шесть элементов в переменной $bug_ list, соответствующих числу указателей места заполнения параметра.
Опубликовал vovan666
August 17 2013 10:18:52 ·
0 Комментариев ·
2986 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.