2009-11-10 56 views
1

如何停止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); 
+0

你知道,如果你無法$配置[」 global_xss_filtering'] = FALSE ;,它不會出來?你能檢查它嗎? – shin 2009-11-10 13:23:20

+0

嘗試首先在整個網站檢查是否有效,然後工作自下而上 – Natrium 2009-11-10 13:26:07

+0

它在配置文件中禁用時起作用 – Tim 2009-11-10 14:01:21

回答

0

我不使用XSS過濾,因爲它仍然有錯誤。例如,當XSS過濾器打開時,您將無法發佈表單,其中有YouTube的嵌入代碼。我只使用我希望它進行消毒的每個字段的過濾器。

如果您的表單正在關閉XSS過濾功能,然後將其關閉。如果您需要對XSS攻擊進行消毒,可以考慮另一個庫,如HTML purifier

0

問題出在安全類

以下行是如果缺少添加分號的。

$str = preg_replace('#(&\#?[0-9a-z]{2,})([\x00-\x20])*;?#i', "\\1;\\2", $str); 

解決方案是擴展CI,創建您自己的My_Security類。使用_validate_entities函數將其粘貼到核心文件夾中。

評論上面的行。