安全類
安全類包含一些方法,能幫助您創(chuàng)建安全的應(yīng)用程序,對輸入的數(shù)據(jù)進行安全方面的處理.
XSS 過濾
CodeIgniter 包含了跨站腳本攻擊的防御機制,它可以自動地對所有POST以及COOKIE數(shù)據(jù)進行過濾,或者您也可以針對單個項目來運行它。默認(rèn)情況下,它 不會 全局運行,因為這樣也需要一些執(zhí)行開銷,況且您也不一定在所有情況下都用得到它.
XSS過濾器會查找那些常被用來觸發(fā)JavaScript或者其他類型的企圖劫持cookie或進行其它惡意行為的代碼. 如果發(fā)現(xiàn)任何不允許的內(nèi)容,它將把那些內(nèi)容轉(zhuǎn)換為字符實體,以確保安全.
注意: 此函數(shù)只應(yīng)該用來處理那些提交過來的數(shù)據(jù). 它不適合在常規(guī)運行時使用,因為它執(zhí)行時的開銷也是不容忽視的.
要使用XSS過濾器對數(shù)據(jù)進行過濾,請使用此函數(shù):
$this->security->xss_clean()
下面是一個使用實例:
$data = $this->security->xss_clean($data);
如果你希望過濾器能自動過濾所有被訪問到的POST或者COOKIE數(shù)據(jù),請打開你的 application/config/config.php 文件,進行如下設(shè)置即可啟用自動過濾:
$config['global_xss_filtering'] = TRUE;
說明: 如果你使用表單驗證類,同樣也有XSS過濾的選項.
第二個可選的參數(shù), is_image, 允許此函數(shù)對圖片進行檢測以發(fā)現(xiàn)那些潛在的 XSS 攻擊, 這對于保證文件上傳的安全非常有用. 當(dāng)此參數(shù)被設(shè)置為 TRUE 時, 此函數(shù)的返回值不是一個修改過的字符串而是一個布爾值, 如果圖片是安全的則返回 TRUE, 相反, 如果圖片中包含有潛在的、可能會被瀏覽器嘗試運行的惡意信息, 函數(shù)將返回FALSE.
if ($this->security->xss_clean($file, TRUE) === FALSE)
{
????// file failed the XSS test
}
$this->security->sanitize_filename()
當(dāng)接受用戶所輸入的文件名時, 最好是對它們進行一下“消毒”, 這樣能避免目錄被遍歷以及其它安全相關(guān)的問題. 要完成這項工作, 請使用安全類中的 sanitize_filename() 方法. 下面是一個實例:
$filename = $this->security->sanitize_filename($this->input->post('filename'));
如果你允許用戶所輸入的內(nèi)容中包含有相對路徑,例如 file/in/some/approved/folder.txt, 你可以把第二個可選參數(shù) $relative_path 設(shè)置為TRUE.
$filename = $this->security->sanitize_filename($this->input->post('filename'), TRUE);
跨站請求偽造(Cross-site request forgery,CSRF)
打開你的 application/config/config.php 文件,進行如下設(shè)置,即可啟用 csrf 保護:
$config['csrf_protection'] = TRUE;
如果你使用 表單輔助函數(shù), form_open() 函數(shù)將會自動地在你的表單中插入一個隱藏的csrf字段.
?