OWASP Top 10 實例解析

Security2026-10-24TryQuickToolBox

您已經建立了一個網頁應用程式,現在擔心安全問題。OWASP Top 10 是關鍵網頁應用程式安全風險的首選清單。但閱讀清單是一回事,理解這些風險如何在真實程式碼中顯現又是另一回事。本文將透過實際範例和具體的緩解步驟,逐一介紹 OWASP Top 10 的每個類別。

1. 存取控制失效

當使用者能夠執行超出其預期權限的操作時,就會發生存取控制失效。例如,使用者可能透過更改 URL 參數來存取另一個使用者的帳戶。

// 易受攻擊:未檢查請求的使用者 ID 是否屬於已驗證的使用者
app.get('/api/user/:id', (req, res) => {
  const user = getUserById(req.params.id);
  res.json(user);
});

緩解措施:在伺服器端強制執行存取控制檢查。使用角色型或屬性型存取控制,並預設拒絕。

2. 加密機制失效

密碼和信用卡號等敏感資料在傳輸和儲存時都必須加密。使用弱演算法或硬編碼密鑰是常見的陷阱。

# 易受攻擊:使用 MD5 進行密碼雜湊
import hashlib
hash = hashlib.md5(password.encode()).hexdigest()

緩解措施:使用 bcrypt 或 Argon2 等強力、加鹽的雜湊演算法。傳輸中的資料一律使用 HTTPS (TLS)。

3. 注入攻擊

注入漏洞(例如 SQL 注入)發生在將不受信任的資料作為命令或查詢的一部分發送給解釋器時。

// 易受攻擊:在 SQL 查詢中使用字串串接
$sql = "SELECT * FROM users WHERE username = '" . $_GET['username'] . "'";

緩解措施:使用參數化查詢或預備語句。切勿將使用者輸入直接串接到查詢中。

4. 不安全設計

不安全設計指的是控制設計缺失或無效。例如,密碼恢復系統若洩露電子郵件是否存在,可能協助攻擊者。

緩解措施:在設計階段進行威脅建模,使用安全設計模式,並實作速率限制和其他控制措施。

5. 安全設定錯誤

這包括保留預設帳戶啟用、向使用者顯示堆疊追蹤,或錯誤配置雲端儲存權限。

# 易受攻擊:在生產環境中啟用除錯模式
DEBUG = True

緩解措施:強化組態設定、移除未使用的功能,並自動化組態檢查。

6. 易受攻擊和過時的元件

使用含有已知漏洞的程式庫就像把門開著。例如,某個熱門程式庫的過時版本可能存在遠端程式碼執行漏洞。

緩解措施:定期更新相依性、使用 OWASP Dependency-Check 等工具,並監控 CVE。

7. 識別和驗證失效

弱驗證機制允許攻擊者猜測密碼或劫持工作階段。

// 易受攻擊:登入失敗後未鎖定帳戶
if (passwordMatches) {
  loginUser();
} else {
  // 僅顯示錯誤,沒有速率限制
}

緩解措施:實作多因素驗證、強制執行強密碼原則,並使用安全的工作階段管理。

8. 軟體和資料完整性失效

此類別包括使用不受信任的來源進行軟體更新,或還原序列化不受信任的資料。

// 易受攻擊:還原序列化不受信任的資料
$data = unserialize($_POST['data']);

緩解措施:驗證數位簽章、使用完整性檢查,並避免還原序列化不受信任的資料。

9. 安全日誌記錄和監控失效

沒有適當的日誌記錄,入侵行為就無法被偵測。例如,未能記錄失敗的登入嘗試。

緩解措施:記錄安全相關事件、設定警示,並制定事件回應計畫。

10. 伺服器端請求偽造 (SSRF)

當攻擊者能夠讓伺服器向非預期的位置發送請求時,就會發生 SSRF。

// 易受攻擊:未經驗證就從使用者輸入取得 URL 並發送請求
fetch(req.query.url).then(...)

緩解措施:驗證和清理 URL、使用允許清單,並限制伺服器權限。

比較表

風險範例緩解措施
存取控制失效透過 URL 操作存取其他使用者的資料強制執行伺服器端存取檢查
加密機制失效以純文字儲存密碼使用強力雜湊和 TLS
注入攻擊透過未清理的輸入進行 SQL 注入參數化查詢
不安全設計密碼恢復洩露電子郵件是否存在威脅建模和安全模式
安全設定錯誤生產環境中開啟除錯模式強化組態設定
易受攻擊的元件含有已知 CVE 的過時程式庫定期更新和相依性檢查
驗證失效登入沒有速率限制多因素驗證和強密碼原則
完整性失效還原序列化不受信任的資料驗證簽章並避免不安全的還原序列化
日誌記錄失效登入失敗沒有日誌實作日誌記錄和監控
SSRF取得使用者提供的 URL驗證並允許清單 URL

常見問題

什麼是 OWASP Top 10?

OWASP Top 10 是由開放網頁應用程式安全專案 (OWASP) 發布的定期更新清單,列出最關鍵的網頁應用程式安全風險。

OWASP Top 10 多久更新一次?

它會定期更新以反映新興威脅和技術變化。上一次重大更新是在 2021 年。

OWASP Top 10 足以確保安全嗎?

不夠,它只是一個起點。全面的安全計畫包括安全程式碼撰寫實務、定期測試和持續監控。

為了進一步保護您的應用程式,可以考慮使用 Nginx 日誌分析器 等工具來監控和偵測伺服器日誌中的可疑活動。