2015-08-11 7 views

ответ

2

Потому что strip_tags не фиксирует все возможные случаи злоупотребления. Правда, он исправляет худших нарушителей, но есть и другие случаи, например. при вводе значений обратно в <input> теги сами, где могут быть разбиты кавычки.

Рассмотрим: <input type="text" value="my string" />

Если my string приходит из другого источника данных, не XSS защиты, она может мыслимый содержать что-то вроде: "><script ....

, который может использовать оригинальное закрытие > из входной тег - и strip_tags может или не может поймать этот случай. Кажется, я помню, что он ищет <, а затем >, который не найден в приведенной выше строке.

+0

Спасибо. Очень полезный ответ. Как насчет использования обоих: 'strip_tags (htmlspecialchars ($ _ GET))'? Имеют смысл? Does strip_tags все еще работают с экранированными html-символами? – user4271704

+0

Нет, потому что в этот момент он больше не содержит '<' or '>' тегов. –

+0

Как насчет strip_tags, а затем htmlspecialchars? Я думаю, что так, только в тех конкретных случаях, о которых вы говорили, пока еще остаются теги, и в большинстве случаев они будут удалены так лучше? – user4271704