安全指南?
我們需要認(rèn)真對待安全問題。 CodeIgniter有多項功能和技術(shù)來執(zhí)行良好的安全習(xí)慣,這樣你需要做的就比較簡單。
我們尊重 開放式Web應(yīng)用程序安全項目 (OWASP) 組織并且盡可能遵循他們的建議。
以下是來自 OWASP Top Ten Cheat Sheet, 確定 Web 應(yīng)用程序上的漏洞。針對每一個漏洞,我們提供了一個簡短的描述和 OWASP 建議,然后根據(jù) CodeIgniter 的規(guī)定來解決這個漏洞。
A1 注入?
注入攻擊是通過客戶端的輸入向應(yīng)用程序發(fā)送部分或全部不適當(dāng)?shù)牟迦霐?shù)據(jù)。攻擊向量包括 SQL、XML、ORM、代碼和緩沖區(qū)溢出。
OWASP 建議?
- 說明:設(shè)置正確的內(nèi)容類型、字符集和區(qū)域
- 提交:驗證字段并且提供反饋
- 控制器:凈化輸入;使用正確的字符集驗證輸入
- 模型:參數(shù)化檢查
CodeIgniter 規(guī)定?
- HTTP library 提供輸入字段和內(nèi)容元數(shù)據(jù)的過濾
- 表格驗證庫
A2 不嚴(yán)謹(jǐn)?shù)牡纳矸菡J(rèn)證和會話管理?
不充分的身份驗證或不恰當(dāng)?shù)臅捁芾頃?dǎo)致用戶獲得比他們權(quán)限更大的權(quán)限。
OWASP 建議?
- 說明:驗證認(rèn)證和角色;用表格發(fā)送 CSRF token
- 設(shè)計:只使用內(nèi)置會話管理
- 控制器:驗證用戶、角色、CSRF token
- 模型:驗證角色
- 提示:考慮使用 request 管理器
CodeIgniter 規(guī)定?
- Session 庫
- HTTP library 提供對CSRF的驗證
- 方便添加第三方認(rèn)證
A3 跨站腳本 (XSS)?
輸入驗證不足導(dǎo)致其中一個用戶可以將內(nèi)容添加到一個網(wǎng)站,當(dāng)其他用戶查看該網(wǎng)站時,該網(wǎng)站可能是惡意的。
OWASP 建議?
- 說明:根據(jù)輸出環(huán)境對所有用戶數(shù)據(jù)進(jìn)行轉(zhuǎn)義;設(shè)置輸入約束
- 控制器:正確的輸入驗證
- 提示:只處理可信數(shù)據(jù);不要將 HTML 轉(zhuǎn)義數(shù)據(jù)存入數(shù)據(jù)庫中。
CodeIgniter 規(guī)定?
- esc 函數(shù)
- 表格驗證庫
A4 直接引用不安全的對象?
當(dāng)應(yīng)用程序根據(jù)用戶提供的輸入提供直接訪問時,就會發(fā)生不安全的直接對象引用。由于此漏洞,攻擊者可以繞過系統(tǒng)中的授權(quán)直接訪問資源,例如數(shù)據(jù)庫記錄或文件。
OWASP 建議?
- 說明:不要暴露內(nèi)部數(shù)據(jù);使用隨機的參考圖
- 控制器:獲得的數(shù)據(jù)來自可信任的來源或隨機的參考圖
- 模型: 更新數(shù)據(jù)之前驗證用戶角色
CodeIgniter 規(guī)定?
- 表格驗證庫
- 容易添加第三方認(rèn)證
A5 安全配置錯誤?
應(yīng)用程序體系結(jié)構(gòu)配置不當(dāng)會導(dǎo)致可能危及整個架構(gòu)安全性的錯誤。
OWASP 建議?
- 說明:強化 Web 和應(yīng)用服務(wù)器;使用 HTTP 嚴(yán)格傳輸安全
- 控制器:強化 Web 和應(yīng)用服務(wù)器;保護(hù) XML 堆棧
- 模型:強化數(shù)據(jù)庫服務(wù)器
CodeIgniter 規(guī)定?
- bootstrap 合理的檢查
A6 敏感信息泄露?
敏感數(shù)據(jù)在通過網(wǎng)絡(luò)傳輸時必須受到保護(hù)。敏感數(shù)據(jù)可以包括用戶憑證和信用卡。根據(jù)經(jīng)驗,如果數(shù)據(jù)在存儲時必須受到保護(hù),那么它在傳輸過程中也必須受到保護(hù)。
OWASP 建議?
- 說明:使用 TLS1.2 (安全傳輸層協(xié)議);使用強密碼和哈希;不要把 keys 或哈希發(fā)送到瀏覽器
- 控制器:使用強密碼和哈希
- 模型:加密和服務(wù)器的通信和授權(quán)
CodeIgniter 規(guī)定?
- 存儲加密的會話密鑰
A7 缺少功能級訪問控制?
敏感數(shù)據(jù)在通過網(wǎng)絡(luò)傳輸時必須受到保護(hù)。敏感數(shù)據(jù)可以包括用戶憑證和信用卡。根據(jù)經(jīng)驗,如果數(shù)據(jù)在存儲時必須受到保護(hù),那么它在傳輸過程中也必須受到保護(hù)。
OWASP 建議?
- 說明:確保非Web數(shù)據(jù)在Web根目錄之外;驗證用戶和角色;發(fā)送 CSRF tokens
- 控制器:驗證用戶和角色;驗證 CSRF tokens
- 模塊: 驗證角色
CodeIgniter 規(guī)定?
- 公共文件夾,放在 application 和 system 外面
- HTTP library 提供 CSRF 驗證
A8 跨站請求偽造(CSRF)?
CSRF是一種攻擊,它迫使最終用戶在當(dāng)前已通過身份驗證的Web應(yīng)用程序上執(zhí)行不必要的操作。
OWASP 建議?
- 說明:驗證用戶和角色;發(fā)送 CSRF tokens
- 控制器:驗證用戶和角色;驗證 CSRF tokens
- 模型:驗證角色
CodeIgniter 規(guī)定?
- HTTP library 提供 CSRF 驗證
A9 使用含有已知漏洞的組件?
許多應(yīng)用程序都可以利用漏洞和已知的攻擊策略,獲得遠(yuǎn)程控制或者得到數(shù)據(jù)。
OWASP 建議?
- 不要使用這些有漏洞的組件
CodeIgniter 規(guī)定?
- 添加第三方庫時必須審查
A10 未驗證的重定向和轉(zhuǎn)發(fā)?
錯誤的業(yè)務(wù)邏輯或注入可操作的代碼可能會錯誤地重定向用戶。
OWASP 建議?
- 說明:不要使用 URL 重定向;使用隨機的間接引用
- 控制器:不要使用 URL 重定向;使用隨機的間接引用
- 模型:驗證角色
CodeIgniter 規(guī)定?
- HTTP library 提供 …
- Session library provides flashdata