Фильтрация пользовательского ввода - нужно ли фильтровать HTML? - PullRequest
5 голосов
/ 21 февраля 2010

Примечание: я забочусь о внедрении SQL-кода и выходе из него в другом месте - этот вопрос касается только фильтрации ввода, спасибо.

Я занимаюсь рефакторингом своих функций фильтрации пользовательского ввода. Перед передачей параметра GET / POST в фильтр определенного типа с помощью filter_var () я делаю следующее:

Теперь вопрос: имеет ли смысл передавать параметр в фильтр типа htmLawed или Очиститель HTML , или я могу считать ввод безопасным? Мне кажется, что эти два отличаются в основном по степени детализации разрешенных HTML-элементов и атрибутов (которые меня не интересуют, так как я все удаляю), но в документах htmLawed есть раздел о опасных символах это предполагает, что может быть причина использовать это. В этом случае, что было бы вменяемой конфигурацией для него?

Ответы [ 2 ]

2 голосов
/ 22 февраля 2010

Есть много разных подходов к XSS, которые являются безопасными. Единственная причина, по которой нужно знать, подходит ли ваш подход, состоит в том, чтобы проверить его в процессе эксплуатации. Я рекомендую использовать Бесплатный XSS сканер уязвимостей * или с открытым исходным кодом wapiti .

Если честно, я никогда не буду использовать strip_tags (), потому что вам не всегда нужны HTML-теги для выполнения JavaScript! Мне нравится htmlspecialchars($var,ENT_QUOTES);.

Например, это уязвимо для xss:

print('<A HREF="http://www.xssed.com/'.strip_tags($_REQUEST[xss]).'">link</a>');

Вам не нужно <> выполнять javascript в этом случае, потому что вы можете использовать Вот пример атаки:

$_REQUEST[xss]='" onMouseOver="alert(/xss/)"';

ENT_QUOTES позаботится о двойных кавычках, которые исправят эту уязвимость XSS.

* Я связан с этим сайтом / сервисом.

0 голосов
/ 21 февраля 2010

я думаю, что вы делаете безопасно, по крайней мере, с моей точки зрения, HTML-код не должен проходить через ваш фильтр

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