如何停止CodeIgniter添加分號;通過POST發送的包含&符號的數據&?CodeIgniter添加分號
例如,它將「a = 1 & b = 2 & c = 3」轉換成「a = 1&b; = 2&c; = 3」。從尋找在論壇上這似乎是XSS過濾,這是我不想只爲1個控制器禁用站點範圍內的,所以我想下面的代碼,但它仍然這樣做:
$this->config->set_item('global_xss_filtering',false);
如何停止CodeIgniter添加分號;通過POST發送的包含&符號的數據&?CodeIgniter添加分號
例如,它將「a = 1 & b = 2 & c = 3」轉換成「a = 1&b; = 2&c; = 3」。從尋找在論壇上這似乎是XSS過濾,這是我不想只爲1個控制器禁用站點範圍內的,所以我想下面的代碼,但它仍然這樣做:
$this->config->set_item('global_xss_filtering',false);
我不使用XSS過濾,因爲它仍然有錯誤。例如,當XSS過濾器打開時,您將無法發佈表單,其中有YouTube的嵌入代碼。我只使用我希望它進行消毒的每個字段的過濾器。
如果您的表單正在關閉XSS過濾功能,然後將其關閉。如果您需要對XSS攻擊進行消毒,可以考慮另一個庫,如HTML purifier。
問題出在安全類
以下行是如果缺少添加分號的。
$str = preg_replace('#(&\#?[0-9a-z]{2,})([\x00-\x20])*;?#i', "\\1;\\2", $str);
解決方案是擴展CI,創建您自己的My_Security類。使用_validate_entities函數將其粘貼到核心文件夾中。
評論上面的行。
要關閉跨站腳本過濾指笨this user guide page
另外,如果你想離開的黑客核心修復代碼檢查this solution
你知道,如果你無法$配置[」 global_xss_filtering'] = FALSE ;,它不會出來?你能檢查它嗎? – shin 2009-11-10 13:23:20
嘗試首先在整個網站檢查是否有效,然後工作自下而上 – Natrium 2009-11-10 13:26:07
它在配置文件中禁用時起作用 – Tim 2009-11-10 14:01:21