Если мне нужно отображать $_GET
значения в шаблонах, почему бы не использовать strip_tags()
, чтобы предотвратить xss-атаку вместо htmlspecialchars()
?Почему бы не использовать strip_tags(), чтобы предотвратить xss-атаку вместо htmlspecialchars()?
0
A
ответ
2
Потому что strip_tags не фиксирует все возможные случаи злоупотребления. Правда, он исправляет худших нарушителей, но есть и другие случаи, например. при вводе значений обратно в <input>
теги сами, где могут быть разбиты кавычки.
Рассмотрим: <input type="text" value="my string" />
Если my string
приходит из другого источника данных, не XSS защиты, она может мыслимый содержать что-то вроде: "><script ....
, который может использовать оригинальное закрытие >
из входной тег - и strip_tags
может или не может поймать этот случай. Кажется, я помню, что он ищет <
, а затем >
, который не найден в приведенной выше строке.
Спасибо. Очень полезный ответ. Как насчет использования обоих: 'strip_tags (htmlspecialchars ($ _ GET))'? Имеют смысл? Does strip_tags все еще работают с экранированными html-символами? – user4271704
Нет, потому что в этот момент он больше не содержит '<' or '>' тегов. –
Как насчет strip_tags, а затем htmlspecialchars? Я думаю, что так, только в тех конкретных случаях, о которых вы говорили, пока еще остаются теги, и в большинстве случаев они будут удалены так лучше? – user4271704