安全
本頁描述了一些關(guān)于 Web 安全的“最佳實(shí)踐”,并詳細(xì)說明了 CodeIgniter 的內(nèi)部安全特性。
URI 安全
CodeIgniter 嚴(yán)格限制 URI 中所能包含的字符,以此幫助你設(shè)計(jì)的程序減少被惡意數(shù)據(jù)入侵的可能。URI 一般只包含下列內(nèi)容:
- 字母和數(shù)字(Alpha-numeric text)
- 波浪符(Tilde): ~
- 句號(Period): .
- 冒號(Colon): :
- 下劃線(Underscore): _
- 破折號(Dash): -
Register_globals
系統(tǒng)初始化期間所有的全局變量都被 unset,除了那些在 $_GET、$_POST 和 $_COOKIE 數(shù)組中的數(shù)據(jù)。實(shí)際上 unsetting 實(shí)例程序的作用與register_globals = off 相同。
error_reporting
在生產(chǎn)環(huán)境中,往往有必要通過設(shè)置內(nèi)部的error_reporting值為0來禁用PHP錯誤報(bào)告。 這可以防止可能含有敏感信息的原始PHP錯誤報(bào)告輸出。
在 index.php 設(shè)置CodeIgniter的 ENVIRONMENT 常量為 'production' 將會關(guān)閉這些錯誤(報(bào)告)。在開發(fā)模式下,推薦設(shè)為 'development'。 更多關(guān)于各環(huán)境間區(qū)別的信息可以在處理多環(huán)境一章找到。
magic_quotes_runtime
在系統(tǒng)初始化期間 magic_quotes_runtime 指令被關(guān)閉以便在數(shù)據(jù)庫檢索數(shù)據(jù)時不必去掉反斜線。
最佳實(shí)踐
在接收任何數(shù)據(jù)到你的程序之前,不管是表單提交的 POST 數(shù)據(jù)、COOKIE 數(shù)據(jù)、URI 數(shù)據(jù)、XML-RPC 數(shù)據(jù)、還是 SERVER 數(shù)組中的數(shù)據(jù),我們都推薦你實(shí)踐下面的三個步驟:
- 過濾不良數(shù)據(jù).
- 驗(yàn)證數(shù)據(jù)以確保符合正確的類型, 長度, 大小等. (有時這一步驟也可取代第一步驟)
- 在提交數(shù)據(jù)到你的數(shù)據(jù)庫之前將其轉(zhuǎn)換.
CodeIgniter 提供了下列函數(shù)以輔助這個過程:
-
XSS 過濾
CodeIgniter帶有一個跨站腳本過濾器. 這個過濾器會查找那些用通常手段嵌入到你數(shù)據(jù)中惡意的Javascript,或其它一些試圖欺騙cookie類型的或者做其它惡意事情的代碼. XSS Filter的詳細(xì)描述在 這里.
-
驗(yàn)證數(shù)據(jù)
CodeIgniter 有一個表單驗(yàn)證類用來幫助驗(yàn)證、過濾和預(yù)處理數(shù)據(jù)。
-
插入數(shù)據(jù)庫之前轉(zhuǎn)義所有數(shù)據(jù)
不要插入未轉(zhuǎn)義的信息到你的數(shù)據(jù)庫中。要了解更多信息請參閱查詢章節(jié)。
?