Защищает ли htmlspecialchars этот запрос MySQL? - PullRequest
0 голосов
/ 09 сентября 2011

Я получил $_GET, и пользователи могут отправить строку $_GET в MySQL, поэтому быстрый вопрос:

Является ли этот запрос:

mysql_query("SELECT XX FROM ZZ WHERE YY %LIKE% " . htmlspecialchars($_get['string']) . ";");

достаточно, чтобы быть в безопасности?или я должен добавить что-то большее, чем htmlspecialchars(), чтобы быть в безопасности?

Заранее спасибо за все ответы.

Ответы [ 3 ]

3 голосов
/ 09 сентября 2011

Небезопасно.

Тривиальные примеры данных, которые даже показывают, что htmlspecialchars делает "это вещь" - это просто неправильная "вещь" .

1;DROP TABLE all_your_precious_data--&

Удачное кодирование.


Решение: Используйте заполнители в соответствии с PDO или mysqli (или используйте mysql_real_escape_string, если вы хотите продолжать продвигать устаревшие методы ...)

См. Лучший способ остановить SQL-инъекцию в PHP и Запретить SQL-инъекцию с PHP и Можно ли предотвратить SQL-инъекцию с помощью только добавочных черт?

2 голосов
/ 09 сентября 2011

htmlspecialchars не имеет ничего общего с MySQL.Он предназначен для экранирования специальных символов HTML, символов, которые имеют особое значение при значении HTML .Вы должны использовать его перед записью ненадежных данных в браузер, а не в базу данных.

Вам необходимо полностью удалить htmlspecialchars и использовать mysql_real_escape_string, или еще лучше, PDO .

0 голосов
/ 09 сентября 2011

Возможно, это небезопасно, и вам лучше использовать mysql_real_escape_string.

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