CodeIgniter-为什么使用xss_clean
如果我正在清理我的数据库插入,并且转义了我编写的HTML,htmlentities($text, ENT_COMPAT,
'UTF-8')那么是否还可以使用xss_clean过滤输入内容?它还能带来什么其他好处?
回答:
xss_clean()很广泛,而且很愚蠢。此功能的90%不能阻止xss。比如找这个词alert
却没有document.cookie
。没有黑客会使用alert
他们的漏洞,他们会使用xss劫持cookie或读取CSRF令牌来制作XHR。
但是,运行htmlentities()
或htmlspecialchars()
与之冗余是多余的。其中A的情况下xss_clean()
解决这一问题,htmlentities($text,
ENT_COMPAT, 'UTF-8') 失败如下:
<?phpprint "<img src='$var'>";
?>
一个简单的poc是:
http://localhost/xss.php?var =
http:
//domain/some_image.gif’%20onload = alert(/ xss /)
这会将onload=
事件处理程序添加到image标签。一种停止这种形式的xss的方法是htmlspecialchars($var,ENT_QUOTES);
或在这种情况下xss_clean()
也可以防止这种情况。
但是,引用xss_clean()文档:
当然,没有什么是百分百的万无一失的,但是我无法使任何东西通过过滤器。
话虽如此,XSS output problem
一个input
problem。例如,此函数无法考虑变量已在<script>
标签或事件处理程序中。它还不会停止基于DOM的XSS。您需要考虑 如何使用数据
才能使用最佳功能。过滤输入中的所有数据是一个 。它不仅不安全,而且还会破坏数据,从而使比较变得困难。
以上是 CodeIgniter-为什么使用xss_clean 的全部内容, 来源链接: utcz.com/qa/409092.html