2015-08-13 2 views
0

я в настоящее время есть проблема, что htmlentities функции показывает все специальные символы, такие как<, >, ", ' и функция не преобразовывает их к чему-то вроде &#039;.htmlentities показывает все символы, но не выполняет их

Однако он не выполняет такие функции, как <script>alert("test");</script>, он просто отображает его.

Есть ли проблемы? Если да, то как я могу это решить?

Мое основное намерение позади htmlentities вещей должно быть на 100% безопасным для атак XSS.

Пример кода

$string = '<script>alert("test");</script>'; 
echo htmlentities($string, ENT_QUOTES, 'UTF-8'); 
+1

для XSS htmlentities является неправильной функцией. normaly вы используете htmlspecialchars. достаточно! htmlentities делает больше, чем вам нужно. –

+0

Вы просматриваете это в браузере? Потому что браузер расшифровывает эти специальные последовательности и «отображает» их. Проверьте источник, чтобы узнать, действительно ли он закодирован, или протестируйте его, используя error_log вместо echo. – ahoffner

ответ

2

Вы не увидите коды символов, если вы просмотреть исходный код страницы, поскольку ваш браузер автоматически преобразовывать закодированные символы для удобства чтения.

Тот факт, что вы можете видеть их, означает, что они экранированы и отображаются правильно.

Смежные вопросы