Codeigniter-不允许的关键字符,调整代码
我们的网站遭到ddos攻击,并发送了一些格式错误的cookie。我们使用CodeIgniter框架。由于要求我们的用户清除cookie是不合理的,我想知道更改核心中的以下功能会有什么后果。产生错误的Cookie的格式如下:Codeigniter-不允许的关键字符,调整代码,codeigniter,cookies,google-analytics,Codeigniter,Cookies,Google Analytics,我们的网站遭到ddos攻击,并发送了一些格式错误的cookie。我们使用CodeIgniter框架。由于要求我们的用户清除cookie是不合理的,我想知道更改核心中的以下功能会有什么后果。产生错误的Cookie的格式如下: __utmt_~1 最初的功能是: if ( ! preg_match("/^[a-z0-9:_\/-]+$/i", $str)) { exit('Disallowed Key Characters.'); } 如果我将其更改为允许a~,可能会有什么副作用?我知道
__utmt_~1
最初的功能是:
if ( ! preg_match("/^[a-z0-9:_\/-]+$/i", $str))
{
exit('Disallowed Key Characters.');
}
如果我将其更改为允许a~,可能会有什么副作用?我知道这是为了防止恶意用户,我想确保这不会产生不良影响
if ( ! preg_match("/^[a-z0-9:_\/-\~]+$/i", $str))
{
exit('Disallowed Key Characters.');
}
在本文中,@Kristian解释了改变正则表达式的风险,正如他所说:
我有一种感觉,他们保护过度仅仅是因为CodeIgniter的应用如此广泛,他们需要保护自己不受他们自己还没有想到的东西的影响,因为他们的用户可能比CodeIgniter的开发人员更不了解这种攻击
这是我的方法,它解决了问题并保持了CI核心的原始性 只需将此代码放在application/core/MY_Input.php文件中 如果$config['subclass\u prefix']不是'MY\u',请重命名该类和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();
}
}