CodeIgniter4 安全指南

2020-08-17 14:28 更新

我們需要認真對待安全問題。 CodeIgniter有多項功能和技術來執(zhí)行良好的安全習慣,這樣你需要做的就比較簡單。

我們尊重 開放式Web應用程序安全項目 (OWASP) 組織并且盡可能遵循他們的建議。

以下是來自 OWASP Top Ten Cheat Sheet, 確定 Web 應用程序上的漏洞。針對每一個漏洞,我們提供了一個簡短的描述和 OWASP 建議,然后根據(jù) CodeIgniter 的規(guī)定來解決這個漏洞。

A1 注入

注入攻擊是通過客戶端的輸入向應用程序發(fā)送部分或全部不適當?shù)牟迦霐?shù)據(jù)。攻擊向量包括 SQL、XML、ORM、代碼和緩沖區(qū)溢出。

OWASP 建議

  • 說明:設置正確的內容類型、字符集和區(qū)域
  • 提交:驗證字段并且提供反饋
  • 控制器:凈化輸入;使用正確的字符集驗證輸入
  • 模型:參數(shù)化檢查

CodeIgniter 規(guī)定

  • HTTP library 提供輸入字段和內容元數(shù)據(jù)的過濾
  • 表格驗證庫

A2 不嚴謹?shù)牡纳矸菡J證和會話管理

不充分的身份驗證或不恰當?shù)臅捁芾頃е掠脩臬@得比他們權限更大的權限。

OWASP 建議

  • 說明:驗證認證和角色;用表格發(fā)送 CSRF token
  • 設計:只使用內置會話管理
  • 控制器:驗證用戶、角色、CSRF token
  • 模型:驗證角色
  • 提示:考慮使用 request 管理器

CodeIgniter 規(guī)定

A3 跨站腳本 (XSS)

輸入驗證不足導致其中一個用戶可以將內容添加到一個網(wǎng)站,當其他用戶查看該網(wǎng)站時,該網(wǎng)站可能是惡意的。

OWASP 建議

  • 說明:根據(jù)輸出環(huán)境對所有用戶數(shù)據(jù)進行轉義;設置輸入約束
  • 控制器:正確的輸入驗證
  • 提示:只處理可信數(shù)據(jù);不要將 HTML 轉義數(shù)據(jù)存入數(shù)據(jù)庫中。

CodeIgniter 規(guī)定

  • esc 函數(shù)
  • 表格驗證庫

A4 直接引用不安全的對象

當應用程序根據(jù)用戶提供的輸入提供直接訪問時,就會發(fā)生不安全的直接對象引用。由于此漏洞,攻擊者可以繞過系統(tǒng)中的授權直接訪問資源,例如數(shù)據(jù)庫記錄或文件。

OWASP 建議

  • 說明:不要暴露內部數(shù)據(jù);使用隨機的參考圖
  • 控制器:獲得的數(shù)據(jù)來自可信任的來源或隨機的參考圖
  • 模型: 更新數(shù)據(jù)之前驗證用戶角色

CodeIgniter 規(guī)定

  • 表格驗證庫
  • 容易添加第三方認證

A5 安全配置錯誤

應用程序體系結構配置不當會導致可能危及整個架構安全性的錯誤。

OWASP 建議

  • 說明:強化 Web 和應用服務器;使用 HTTP 嚴格傳輸安全
  • 控制器:強化 Web 和應用服務器;保護 XML 堆棧
  • 模型:強化數(shù)據(jù)庫服務器

CodeIgniter 規(guī)定

  • bootstrap 合理的檢查

A6 敏感信息泄露

敏感數(shù)據(jù)在通過網(wǎng)絡傳輸時必須受到保護。敏感數(shù)據(jù)可以包括用戶憑證和信用卡。根據(jù)經(jīng)驗,如果數(shù)據(jù)在存儲時必須受到保護,那么它在傳輸過程中也必須受到保護。

OWASP 建議

  • 說明:使用 TLS1.2 (安全傳輸層協(xié)議);使用強密碼和哈希;不要把 keys 或哈希發(fā)送到瀏覽器
  • 控制器:使用強密碼和哈希
  • 模型:加密和服務器的通信和授權

CodeIgniter 規(guī)定

  • 存儲加密的會話密鑰

A7 缺少功能級訪問控制

敏感數(shù)據(jù)在通過網(wǎng)絡傳輸時必須受到保護。敏感數(shù)據(jù)可以包括用戶憑證和信用卡。根據(jù)經(jīng)驗,如果數(shù)據(jù)在存儲時必須受到保護,那么它在傳輸過程中也必須受到保護。

OWASP 建議

  • 說明:確保非Web數(shù)據(jù)在Web根目錄之外;驗證用戶和角色;發(fā)送 CSRF tokens
  • 控制器:驗證用戶和角色;驗證 CSRF tokens
  • 模塊: 驗證角色

CodeIgniter 規(guī)定

  • 公共文件夾,放在 application 和 system 外面
  • HTTP library 提供 CSRF 驗證

A8 跨站請求偽造(CSRF)

CSRF是一種攻擊,它迫使最終用戶在當前已通過身份驗證的Web應用程序上執(zhí)行不必要的操作。

OWASP 建議

  • 說明:驗證用戶和角色;發(fā)送 CSRF tokens
  • 控制器:驗證用戶和角色;驗證 CSRF tokens
  • 模型:驗證角色

CodeIgniter 規(guī)定

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

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

OWASP 建議

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

CodeIgniter 規(guī)定

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

A10 未驗證的重定向和轉發(fā)

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

OWASP 建議

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

CodeIgniter 規(guī)定

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號