Может быть (намного) проще, если вы просто передадите кодировку htmlentities () / htmlspecialchars
echo htmlspecialchars($string, ENT_QUOTES, 'utf-8');
Но если этого достаточно или нет, зависит от того, что вы печатаете (и где).
см. Также:
http://shiflett.org/blog/2005/dec/googles-xss-vulnerability
http://jimbojw.com/wiki/index.php?title=Sanitizing_user_input_against_XSS
http://www.erich -kachel.de /? P = 415 (на немецком языке. Если я найду что-то похожее на английском -> обновить) edit: хорошо, я думаю, вы можете понять главное, не владея немецким ;)
Строка
javascript:eval(String.fromCharCode(97,108,101,114,116,40,39,88,83,83,39,41))
передает htmlentities () без изменений. Теперь рассмотрим что-то вроде
<a href="<?php echo htmlentities($_GET['homepage']); ?>"
, которое отправит
<a href="javascript:eval(String.fromCharCode(97,108,101,114,116,40,39,88,83,83,39,41))">
в браузер. И это сводится к
href="javascript:eval(\"alert('XSS')\")"
Хотя htmlentities () выполняет работу с содержимым элемента, это не очень хорошо для атрибутов.