OWASP Top 10 實例解析:實用範例與防禦指南

Security2026-10-03TryQuickToolBox

作為一名網頁開發者,您可能聽過 OWASP Top 10——最嚴重的網頁應用程式安全風險清單。但您知道這些風險在真實程式碼中如何呈現嗎?本文將透過實用範例與具體防禦措施,逐一介紹 OWASP Top 10(2021 年版)。讀完後,您將能夠在自己的專案中辨識並修復這些弱點。

1. 失效的存取控制 (Broken Access Control)

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

範例: 一個網頁應用程式透過 /api/users/123 取得使用者資料。如果沒有檢查登入使用者是否為 123,攻擊者只需變更 ID 即可存取他人的資料。

防禦: 對每個請求實施適當的授權檢查。使用角色型存取控制 (RBAC) 並在伺服器端驗證權限。

2. 加密機制失效 (Cryptographic Failures)

此類別(先前稱為「敏感資料外洩」)涵蓋與加密相關的失效,例如以明文傳輸資料或使用弱演算法。

範例: 使用 MD5 或 SHA-1 且未加鹽來儲存密碼。攻擊者可以輕易破解這些雜湊值。

防禦: 使用強大且自適應的雜湊演算法,如 bcrypt、scrypt 或 Argon2。務必強制使用 HTTPS。

3. 注入攻擊 (Injection)

注入漏洞,如 SQL、NoSQL、OS 及 LDAP 注入,發生於將不受信任的資料作為指令或查詢的一部分傳送給解譯器時。

範例: 一個登入表單將使用者輸入串接至 SQL 查詢中:

SELECT * FROM users WHERE username = '" + username + "' AND password = '" + password + "'

攻擊者可以輸入 ' OR '1'='1 來繞過身分驗證。

防禦: 使用參數化查詢或預備語句。切勿將使用者輸入串接至查詢中。

4. 不安全的設計 (Insecure Design)

不安全的設計指的是應用程式架構與設計上的缺陷,而不僅僅是實作錯誤。

範例: 一個密碼重設功能使用安全性問題,而答案容易猜測,或缺乏速率限制。

防禦: 在設計階段進行威脅建模,使用安全的設計模式,並實施速率限制與帳戶鎖定。

5. 安全設定錯誤 (Security Misconfiguration)

這包括預設帳戶、未使用的頁面、未修補的漏洞、未受保護的檔案與目錄等。

範例: 在 Nginx 伺服器上啟用目錄列表功能,暴露敏感檔案。

防禦: 強化您的設定:停用目錄列表、移除預設帳戶、保持軟體更新,並使用安全標頭。

6. 易受攻擊且過時的元件 (Vulnerable and Outdated Components)

使用具有已知漏洞的元件可能會危及整個應用程式。

範例: 使用舊版的 JavaScript 函式庫(如 lodash),帶有已知的原型汙染漏洞。

防禦: 定期掃描相依性(例如使用 npm audit、OWASP Dependency-Check)並更新它們。

7. 身分識別與驗證失效 (Identification and Authentication Failures)

這些失效允許攻擊者破解密碼、金鑰或工作階段權杖,或利用其他實作缺陷來冒充其他使用者的身分。

範例: 允許弱密碼如「123456」,或未實施多重要素驗證 (MFA)。

防禦: 強制執行強密碼原則、實施 MFA,並使用安全的工作階段管理。

8. 軟體與資料完整性失效 (Software and Data Integrity Failures)

此類別著重於對軟體更新、關鍵資料及 CI/CD 流程做出假設,而未驗證其完整性。

範例: 從不受信任的來源下載並執行二進位檔,而未檢查簽章。

防禦: 使用數位簽章、驗證校驗和,並保護您的 CI/CD 流程。

9. 安全日誌與監控失效 (Security Logging and Monitoring Failures)

日誌與監控不足會讓攻擊者得以潛伏、橫向移動並維持存取權限。

範例: 未記錄失敗的登入嘗試,導致暴力破解攻擊無法被偵測。

防禦: 記錄安全相關事件、為可疑活動設定警示,並定期檢閱日誌。

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

SSRF 漏洞發生於網頁應用程式擷取遠端資源時,未驗證使用者提供的 URL。

範例: 一個 webhook 功能會擷取使用者提供的 URL。攻擊者可以讓伺服器請求內部資源,例如 AWS 上的 http://169.254.169.254/latest/meta-data/。

防禦: 驗證並清理 URL、使用允許清單,並限制對外流量。

緩解 OWASP Top 10 的實用步驟

  1. 實施存取控制: 對每個請求在伺服器端強制執行授權檢查。
  2. 使用安全的加密: 使用 bcrypt/Argon2 雜湊密碼,強制使用 HTTPS。
  3. 防止注入: 使用參數化查詢並逸出輸出。
  4. 安全設計: 進行威脅建模、使用安全模式,並實施速率限制。
  5. 強化設定: 停用未使用的功能、保持軟體更新、設定安全標頭。
  6. 管理相依性: 定期掃描並更新元件。
  7. 強化身分驗證: 強制執行強密碼、實施 MFA。
  8. 驗證完整性: 使用簽章與安全的 CI/CD。
  9. 日誌與監控: 記錄安全事件、設定警示。
  10. 防止 SSRF: 驗證 URL、使用允許清單、限制對外流量。

常見問題

什麼是 OWASP Top 10?

OWASP Top 10 是由開放網頁應用程式安全計畫 (OWASP) 發布的定期更新清單,列出最關鍵的網頁應用程式安全風險。它可作為開發人員保護應用程式的基準。

OWASP Top 10 多久更新一次?

大約每三到四年更新一次。最新版本為 2021 年版,前一版為 2017 年版。

我可以只依賴 OWASP Top 10 來確保安全嗎?

不行,它只是一個起點。您還應該考慮其他資源,如 OWASP 應用程式安全驗證標準 (ASVS),並定期進行安全測試。

想要快速分析您的 Nginx 日誌以找出可疑活動嗎?試試我們的 Nginx 日誌分析器,以識別潛在攻擊並監控您的網頁伺服器安全。