Нужно ли экранировать данные для защиты от внедрения SQL при использовании bind_param () в MySQLi? - PullRequest
6 голосов
/ 14 сентября 2011

Как следует из заголовка, мне нужно экранировать пользовательский ввод при использовании bind_param () или это делается внутренне?

Спасибо.

Ответы [ 2 ]

10 голосов
/ 14 сентября 2011

Нет, вам не нужно экранировать данные для защиты от внедрения SQL при привязке параметров.

Это не освобождает вас от проверки указанных данных.

При привязке параметров экранирование не выполняется (внутренне или иным образом). Инструкция SQL подготовлена ​​с заполнителями параметров, и значения для них передаются во время выполнения.

База данных знает, что такое параметры, и обрабатывает их соответственно, в отличие от интерполяции значений SQL.

6 голосов
/ 14 сентября 2011

номер

Цитировать это

http://mysql.lamphost.net/tech-resources/articles/4.1/prepared-statements.html

"Обычно, когда вы имеете дело со специальным запросом, вы должны быть очень осторожны при обработке данных, которые вы получили от пользователя. Это влечет за собой использование функций, которые избегают всех необходимых проблем символы, такие как одинарные кавычки, двойные кавычки и обратная косая черта персонажи. Это не нужно при работе с подготовленными заявлениями. Разделение данных позволяет MySQL автоматически принимать учитывать эти символы, и их не нужно экранировать с помощью каких-либо специальная функция . "

...