Codeigniter - 禁止关键字符,调整代码

时间:2014-10-08 19:12:24

标签: codeigniter cookies google-analytics

我们的网站遭到了ddos攻击,并发送了一些格式错误的Cookie。我们使用CodeIgniter框架。由于要求我们的用户清除他们的cookie是不合理的,我想知道改变核心中的以下功能会产生什么影响。产生错误的cookie的格式为:

__utmt_~1

原始功能是:

if ( ! preg_match("/^[a-z0-9:_\/-]+$/i", $str))
{
    exit('Disallowed Key Characters.');
}

如果我改变它以允许〜可能的副作用是什么?我知道这是为了防止恶意用户,我想确保这不会产生不良影响。

if ( ! preg_match("/^[a-z0-9:_\/-\~]+$/i", $str))
{
    exit('Disallowed Key Characters.');
} 

2 个答案:

答案 0 :(得分:1)

这是我的方式,它解决问题并保持CI核心原始

只需将此代码放入文件application / core / MY_Input.php

即可

如果$ config [' subclass_prefix']不是' MY _'

,请重命名类和php文件
<?php
if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class MY_Input extends CI_Input {

    function _sanitize_globals() {

        // Avoid error come from cookie __utmt_~1, it set by Google Analatics
        foreach($_COOKIE as $key => $val) {
            if (strpos($key, '~') !== false) {
                unset($_COOKIE[$key]);
            }
        }

        parent::_sanitize_globals();
    }
}

答案 1 :(得分:0)

在此answer @Kristian解释了改变正则表达式的风险,正如他所说:

  

我觉得他们过度保护只是因为CodeIgniter被如此广泛地使用,以至于他们需要保护他们自己还没有想到的东西,因为他们的用户可能更不了解这种攻击比CodeIgniter的开发人员。