2017-09-30 127 views
0

我正在使用別人構建的代碼。我看到在配置中的xss活動:Codeigniter 3 - XSS Filtering

global_xss_filtering = TRUE 

我也看到這已被棄用。我在輸入級還發現:

$this->_enable_xss = (config_item('global_xss_filtering') === TRUE); 
is_bool($xss_clean) OR $xss_clean = $this->_enable_xss; 

這意味着,如果激活配置「global_xss_filtering」,即使我關掉XSS上輸入 - >後,它將應用XSS過濾。

這意味着我必須關閉它在配置和使用

$this->securit->xss_clean($this->input->post()) 

我的問題有以下幾點:如果應用到$這個 - >輸入 - >後(無XSS

  1. '變量'),這是使用它而不是$ _POST的其他優點?

  2. 哪種方法可以在Codeigniter 3中執行XSS過濾?

在此先感謝。

回答

1

哪種方法可以在Codeigniter 3中執行XSS過濾?

目前在開發社區的共識似乎是XSS過濾應該在輸出而不是輸入。儘管如此,輸入和輸出過濾器仍然有很強的爭論和支持者。

這是一個很大很複雜的話題。找到比你更想知道在

https://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/cross-site-malicious-content.html

https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet#Introduction

https://paragonie.com/blog/2015/06/preventing-xss-vulnerabilities-in-php-everything-you-need-know

閱讀並理解了這一切後,你可能會發現,防止XSS在輸入和輸出期間都需要很多思考和工作放。

許多人建議不要使用Codeigniter的XSS功能,而應該選擇類似HTML Purifier的東西。

如果沒有通過$ this-> input-> post('variable')應用XSS,這是使用它而不是$ _POST的其他優點嗎?

使用$this->input->post('variable')的主要優點是,它會檢查指數(「變量」)在$_POST存在。要使用$_POST直接你真的應該確保陣列具有指標。

if(isset($_POST['variable']) 
{ 
    // do stuff with $_POST['variable'] 
    ... 
} 

如果沒有isset測試,運行時會出現致命的運行時錯誤。因此,使用$this->input->post('variable')刪除的不斷構建if

1

在項目http://conferience.com,我之前的2年中,我們使用(d)合作,html purifier防止XSS atacks乏味。另外,當需要明文輸入時,我們只需使用php的本地strip_tags方法對任何html字符串進行分條。

因此,我們設置下列設置:

$ global_xss_filtering = FALSE

,並用於上$_POST['something']/$this->input->post('something')輸入人工處理。