Что mysql_real_escape_string () делает, что addlashes () не делает? - PullRequest
20 голосов
/ 11 февраля 2009

Зачем нам нужны специфичные для БД функции, такие как mysql_real_escape_string ()? Что он может сделать, чего не делает addlashes ()?

На данный момент игнорируется превосходная альтернатива параметризованных запросов, это веб-приложение, которое использует addlashes (), все еще уязвимое для SQL-инъекций, и если да, то как?

Ответы [ 11 ]

0 голосов
/ 11 февраля 2009

Он должен экранировать строки для MySQL так, как это не делают другие средства цитирования.

Однако гораздо предпочтительнее использовать интерфейс mysqli и использовать параметризованные подготовленные запросы вместо попытки убедиться, что все ваши строки правильно экранированы. Использование параметризованных запросов устраняет необходимость в такой грязной работе со строками и значительно снижает риск внедрения SQL.

Редактировать: Я немного поясню, почему я считаю цитирование плохой идеей: легко забыть, когда и где вам нужно цитировать - должна ли ваша переменная быть строкой или числом, была ли она уже в кавычках, и т. д. Параметризованный запрос не имеет ни одной из этих проблем , и необходимость в цитировании полностью устранена.

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