如何在php codeigniter中避免xss攻击

icomxhvb  于 2022-12-06  发布在  PHP
关注(0)|答案(5)|浏览(121)

我对web开发相对来说是个新手。就在今天,我的老师告诉我在我的项目中实现一种避免跨服务器脚本的方法。我搜索了很多,找到了关于xss_clean的东西,但是我不知道如何使用和实现它。任何与此相关的指南或文章都是受欢迎的。或者如果你想在这里解释一下,这将保存我很多额外的努力,我将非常感谢你。我正在使用CodeIgniter框架,所以请任何相关的文章将是好的。

bvjveswy

bvjveswy1#

XSS漏洞的问题在于你不能只应用一个 * 修复 *,这些漏洞可能出现在你写的每一件小事中。
当攻击者能够将HTML插入您网站访问者的页面时,就会发生XSS。根据代码的内容,攻击者可以将访问者发送到他的钓鱼网站或窃取他的会话。
不难想象如何防止HTML注入:你只需要对所有用户输入进行HTML转义。但是在实践中,可能会有很多这样的操作,你的系统只有在最薄弱的环节才是安全的。

lo8azlld

lo8azlld2#

从我的经验来看,CI的XSS相当不错--我遇到过这样的情况,它确实删除了我想要的东西,如果您没有预料到的话,调试起来会很痛苦。我从来没有能够“轻松地”绕过它,也没有读到过任何漏洞(CI社区相当大)。
详情请看下面的链接,这可能会帮助你http://blog.astrumfutura.com/2011/05/codeigniter-2-0-2-cross-site-scripting-xss-fixes-and-recommendations/
也读这个
http://htmlpurifier.org/

2izufjch

2izufjch3#

要删除xss攻击,您可以执行以下操作:
1.您需要从postget值中删除不需要的标记(如“script“)。
1.从postget值中删除meta-characters

nwwlzxa7

nwwlzxa74#

一个非常简短和简单答案是使用下面的代码行,其中您提交了控制器文件中的详细信息。

$data = $this->security->xss_clean($data);

这里数据可以是单个值,如果有多个记录,则可以是数组。
您查询的另一个附加项。使用以下内容来防止sql注入

$username = $this->input->post('username');
$query = 'SELECT * FROM subscribers_tbl WHERE user_name = '.
$this->db->escape($email);
$this->db->query($query);
watbbzwu

watbbzwu5#

我已经实现了这个功能来防御XSS攻击:

public static function protectArrayAgainstXSS(&$arr) {
    $changed = false;
    foreach ($arr as $index => $a) {
        if (is_array($a)) {
            $changed = $changed || Common::protectArrayAgainstXSS($arr[$index]);
        } else if ($a !== null) {
            $changed = $changed || ($arr[$index] === strip_tags($a));
            $arr[$index] = strip_tags($a);
        }
    }
    return !$changed;
}

相关问题