我们的网站遭到了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.');
}
答案 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的开发人员。