PHP XSS Вопрос / Разъяснение - PullRequest
       3

PHP XSS Вопрос / Разъяснение

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

Об этом уже спрашивали, но мне нужна 100% ясность в этом вопросе, так как для меня очень важно сделать это правильно.

Ситуация: Система сообщений на сайте.Пользователь вводит сообщение в текстовое поле, отправляет форму, и оно попадает в базу данных.Эти данные затем могут быть вызваны из базы данных и отображены в тегах <span> другому пользователю.

Какие процедуры безопасности мне необходимо предпринять, чтобы эти данные не были вредоносными?Я уже использую mysql_real_escape_string, чтобы остановить любое внедрение, и strip_tags кажутся полезными, но я слышал много других упомянутых имен.Что мне нужно использовать для защиты этих данных, учитывая, что они отображаются только в <span> тегах?

Спасибо.

Ответы [ 3 ]

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

Заблуждение состоит в том, что вы хотите избежать ввода, что неверно. Вы должны фильтровать выходные данные (и база данных также является выходной).

Это означает, что при отправке формы вы используете mysql_real_escape_string() для отправки (вывода) данных в базу данных и htmlspecialchars() для вывода содержимого на экран. Тот же принцип применим к регулярным выражениям, где вы будете использовать preg_quote() и так далее.

Независимо от того, откуда поступают данные, вы должны избегать их в контексте того, куда вы отправляете их.

Поэтому для предотвращения XSS-атак вы должны использовать htmlspecialchars() / htmlentities(). mysql_real_escape_string не имеет ничего общего с XSS (но вы все равно должны использовать его при отправке данных в базу данных).

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

Используйте htmlspecialchars при выводе на HTML-страницу. Он будет отображать данные так же, как пользователь ввел их (таким образом, пользователи могут использовать что-то вроде <3 в своих сообщениях, не удаляя остальную часть)

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

Пожалуйста, ознакомьтесь с Шпаргалкой по профилактике OWASP XSS. Он объяснит, как избежать XSS для разных контекстов. Htmlentities должны делать свою работу, когда между тегами.

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