可能重复:
What are the best practices for avoid xss attacks in a PHP site
例如:
http://www.mid-day.com/searchresult.php?query=%3Cscript%3Ealert%28%22This%20is%20vulnerable%20for%20XSS%20..%20by%20binny%22%29%3C/script%3E
此网站有一个基于XSS DOM的漏洞我想知道导致此漏洞的原因以及如何防止它?
答案 0 :(得分:3)
在输出值之前,您应该始终对来自用户的值进行HTML编码,例如查询字符串参数。您可以使用htmlentities功能。
而不是:
$str = $_GET['a'];
echo $str;
使用:
$str = $_GET['a'];
echo htmlentities($str);
答案 1 :(得分:3)
你永远不应直接回应$ _REQUEST,$ _POST,$ _GET或$ _SERVER变量中的内容。
如果你有这样的事情:
index.php?text=hai
你说:
echo $_GET['text']
这不安全。 如果你把脚本放在那里或其他东西:
index.php?text=<script>alert(document.cookie);</script>
它将显示文档cookie。不太安全。
提交内容时,$ _REQUEST和$ _POST也是如此。并使用$ _SERVER ['THIS_URI'] ......
index.php?url=<script><!-- something --></script>
你做了
<form action="<?php echo $_SERVER['THIS_URI']; ?>">
然后你也得到了一个XSS黑客。
始终使用htmlentities($string)
并在MySQL查询中mysql_real_escape_string($string)
。
问候。
答案 2 :(得分:1)
您可以选择HTML Purifier:
HTML Purifier符合标准 用PHP编写的HTML过滤器库。 HTML Purifier不仅会删除所有内容 恶意代码(俗称为 XSS )经过全面审核,
它安全但宽容的白名单 还将确保您的文件 符合标准,只有一些东西 可以全面实现 了解W3C的规范。
内置的PHP函数不会响应各种攻击,这也是需要这种开源解决方案的原因。
我还建议你看看: