CodeIgniter4 安全指南

2020-08-17 14:28 更新

我們需要認(rèn)真對(duì)待安全問(wèn)題。 CodeIgniter有多項(xiàng)功能和技術(shù)來(lái)執(zhí)行良好的安全習(xí)慣,這樣你需要做的就比較簡(jiǎn)單。

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

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

A1 注入

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

OWASP 建議

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

CodeIgniter 規(guī)定

  • HTTP library 提供輸入字段和內(nèi)容元數(shù)據(jù)的過(guò)濾
  • 表格驗(yàn)證庫(kù)

A2 不嚴(yán)謹(jǐn)?shù)牡纳矸菡J(rèn)證和會(huì)話管理

不充分的身份驗(yàn)證或不恰當(dāng)?shù)臅?huì)話管理會(huì)導(dǎo)致用戶獲得比他們權(quán)限更大的權(quán)限。

OWASP 建議

  • 說(shuō)明:驗(yàn)證認(rèn)證和角色;用表格發(fā)送 CSRF token
  • 設(shè)計(jì):只使用內(nèi)置會(huì)話管理
  • 控制器:驗(yàn)證用戶、角色、CSRF token
  • 模型:驗(yàn)證角色
  • 提示:考慮使用 request 管理器

CodeIgniter 規(guī)定

  • Session 庫(kù)
  • HTTP library 提供對(duì)CSRF的驗(yàn)證
  • 方便添加第三方認(rèn)證

A3 跨站腳本 (XSS)

輸入驗(yàn)證不足導(dǎo)致其中一個(gè)用戶可以將內(nèi)容添加到一個(gè)網(wǎng)站,當(dāng)其他用戶查看該網(wǎng)站時(shí),該網(wǎng)站可能是惡意的。

OWASP 建議

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

CodeIgniter 規(guī)定

  • esc 函數(shù)
  • 表格驗(yàn)證庫(kù)

A4 直接引用不安全的對(duì)象

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

OWASP 建議

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

CodeIgniter 規(guī)定

  • 表格驗(yàn)證庫(kù)
  • 容易添加第三方認(rèn)證

A5 安全配置錯(cuò)誤

應(yīng)用程序體系結(jié)構(gòu)配置不當(dāng)會(huì)導(dǎo)致可能危及整個(gè)架構(gòu)安全性的錯(cuò)誤。

OWASP 建議

  • 說(shuō)明:強(qiáng)化 Web 和應(yīng)用服務(wù)器;使用 HTTP 嚴(yán)格傳輸安全
  • 控制器:強(qiáng)化 Web 和應(yīng)用服務(wù)器;保護(hù) XML 堆棧
  • 模型:強(qiáng)化數(shù)據(jù)庫(kù)服務(wù)器

CodeIgniter 規(guī)定

  • bootstrap 合理的檢查

A6 敏感信息泄露

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

OWASP 建議

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

CodeIgniter 規(guī)定

  • 存儲(chǔ)加密的會(huì)話密鑰

A7 缺少功能級(jí)訪問(wèn)控制

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

OWASP 建議

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

CodeIgniter 規(guī)定

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

A8 跨站請(qǐng)求偽造(CSRF)

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

OWASP 建議

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

CodeIgniter 規(guī)定

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

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

OWASP 建議

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

CodeIgniter 規(guī)定

  • 添加第三方庫(kù)時(shí)必須審查

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

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

OWASP 建議

  • 說(shuō)明:不要使用 URL 重定向;使用隨機(jī)的間接引用
  • 控制器:不要使用 URL 重定向;使用隨機(jī)的間接引用
  • 模型:驗(yàn)證角色

CodeIgniter 規(guī)定

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)