gpt4 book ai didi

php - CodeIgniter - 为什么使用 xss_clean

转载 作者:IT王子 更新时间:2023-10-29 01:21:07 25 4
gpt4 key购买 nike

如果我正在清理我的数据库插入,并且还转义了我使用 htmlentities($text, ENT_COMPAT, 'UTF-8') 编写的 HTML - 是否还需要过滤输入使用 xss_clean?它还有哪些其他好处?

最佳答案

xss_clean()很广泛,也很愚蠢。这个函数的 90% 对防止 XSS 没有任何作用。比如找字alert但不是 document.cookie .没有黑客会使用 alert在他们的利用中,他们将使用 XSS 劫持 cookie 或读取 CSRF token 以制作 XHR。

然而运行htmlentities()htmlspecialchars()与它是多余的。 xss_clean() 的案例修复了问题并 htmlentities($text, ENT_COMPAT, 'UTF-8')失败如下:

<?php
print "<img src='$var'>";
?>

一个简单的 poc 是:

http://localhost/xss.php?var=http://domain/some_image.gif'%20onload=alert(/xss/)

这将添加 onload=图像标签的事件处理程序。停止这种形式的 XSS 的方法是 htmlspecialchars($var,ENT_QUOTES);或者在这种情况下 xss_clean()也将阻止这种情况。

但是,引用 xss_clean() 文档:

Nothing is ever 100% foolproof, ofcourse, but I haven't been able to getanything passed the filter.

也就是说,XSS 是一个 output problem 不是 input problem .例如,此函数无法考虑变量已经在 <script> 中。标记或事件处理程序。它也不会阻止基于 DOM 的 XSS。您需要考虑您如何使用数据,以便使用最佳功能。过滤所有输入数据是不好的做法。它不仅不安全,而且还会破坏数据,使比较变得困难。

关于php - CodeIgniter - 为什么使用 xss_clean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5337143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com