安全指南?

我們需要認(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ī)定?

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ī)定?

A9 使用含有已知漏洞的組件?

許多應(yīng)用程序都可以利用漏洞和已知的攻擊策略,獲得遠(yuǎn)程控制或者得到數(shù)據(jù)。

OWASP 建議?

  • 不要使用這些有漏洞的組件

CodeIgniter 規(guī)定?

  • 添加第三方庫時必須審查

A10 未驗證的重定向和轉(zhuǎn)發(fā)?

錯誤的業(yè)務(wù)邏輯或注入可操作的代碼可能會錯誤地重定向用戶。

OWASP 建議?

  • 說明:不要使用 URL 重定向;使用隨機的間接引用
  • 控制器:不要使用 URL 重定向;使用隨機的間接引用
  • 模型:驗證角色

CodeIgniter 規(guī)定?