Примечание. Я позабочусь о том, чтобы SQL-инъекция и вывод выполнялись в другом месте – этот вопрос касается только фильтрации входных данных, спасибо.
Я нахожусь в центре рефакторинга функций фильтрации пользовательских входных данных. Перед передачей параметра GET / POST в фильтр, специфичный для конкретного типа, с помощью filter_var () я делаю следующее:
Теперь вопрос: имеет ли смысл передавать параметр в фильтр, например htmLawed или HTML Purifier , или я могу считать ввод безопасным? Мне кажется, что эти два отличаются в основном детализацией допустимых HTML-элементов и атрибутов (которые меня не интересуют, поскольку я удаляю все), но htmLawed docs содержит раздел о « опасных персонажах », который предполагает, что может быть причина его использования. В этом случае, для чего это была бы разумная конфигурация?
Существует много разных подходов к XSS, которые являются безопасными. Единственное, почему нужно знать, поддерживает ли ваш подход воду, – это проверить, хотя эксплуатация. Я рекомендую использовать Free XSS-уязвимость Scanner * или wapiti с открытым исходным кодом.
Честно говоря, я никогда не буду использовать strip_tags (), потому что вам не нужны html-теги для запуска javascript! Мне нравится htmlspecialchars($var,ENT_QUOTES);
,
Например, это уязвимо для xss:
print('<A HREF="http://www.xssed.com/'.strip_tags($_REQUEST[xss]).'">link</a>');
Вам не нужно <> выполнять javascript в этом случае, потому что вы можете использовать onmouseover, вот пример атаки:
$_REQUEST[xss]='" onMouseOver="alert(/xss/)"';
ENT_QUOTES позаботится о двойных кавычках, которые будут исправлять эту уязвимость XSS.
* Я связан с этим сайтом / службой.
я думаю, что вы делаете безопасно, по крайней мере, с моей точки зрения, ни один HTML-код не должен проходить через ваш фильтр