codeigniter3所有请求参数进行html代码转义,防止XSS攻击

       ci3的项目,如表单填写了<script>alert(123);</script>,然后提交,就会把这段代码存储到mysql数据库。需要用htmlspecialchars进行转义,如双引号(")、尖括号(<、>),或进行实体转换,如将"<"转换为"&lt;",">"转换为"&gt;“存储。

        两个步骤解决:

1、定义hooks(钩子)事件,application/config/hooks.php添加下面代码:

$hook['pre_controller'] = function() {
    // 获取所有 GET 和 POST 参数
    $params = array_merge($_GET, $_POST);
    // 对所有参数进行 HTML 转义
    foreach ($params as $key => $value) {
        if (is_array($value)) {
            $_GET[$key] = array_map('htmlspecialchars', $value);
            $_POST[$key] = array_map('htmlspecialchars', $value);
        } else {
            $_GET[$key] = htmlentities($value);
            $_POST[$key] = htmlentities($value);
        }
    }
};

2、启用钩子,application/config/config.php修改

$config['enable_hooks'] = TRUE;

就可以了,另外其它常用的钩子事件如下,可以根据需要使用:

Codelgniter 提供了多个预定义的执行点(即钩子事件),你可以在这些时机运行自定义逻辑。常用钩子事件包括
pre_system:系统完全启动之前执行,此时控制器还未加载
post system:请求结束后执行,页面输出完成后触发
pre controller:控制器加载之前执行
post_controller:控制器方法执行后、输出发送前触发
post controller constructor:控制器构造函数执行之后运行

最后注意,如果页面需要用ueditor等富文本展示已转义的内容,必须使用htmlspecialchars_decode解析转义。如:

<!-- 加载编辑器的容器 -->
<script id="ueditor" name="content" type="text/plain"><?php echo htmlspecialchars_decode($article['content']); ?></script>

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值