2014-10-08 100 views
4

我們的網站遭到ddos攻擊,併發送了一些畸形的cookie。我們使用CodeIgniter框架。因爲要求我們的用戶清除他們的cookies是不合理的,我想知道在覈心中改變以下功能會產生什麼樣的後果。所產生錯誤的cookie的形式是:Codeigniter - 不允許的關鍵字符,調整代碼

__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

在這種answer @Kristian解釋改變該正則表達式的風險,他說:

我有,他們只是簡單地過度保護的感覺,因爲笨是如此廣泛使用的他們需要防止他們自己沒有想到的事情,因爲他們的用戶可能比CodeIgniter的開發人員更不知道這些攻擊。

1

這裏是我的路,它解決問題,保持CI核心原

只是把這個代碼提交應用程序/核心,如果你的$/MY_Input.php

重命名類和PHP文件config ['subclass_prefix']不是'MY_'

<?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(); 
    } 
}