OWASP Top 10 是關於網頁應用程式安全風險被引用最廣泛的清單,由備受敬重的非營利組織 Open Worldwide Application Security Project (OWASP) 發布。它面向安全專業人員,但其所描述的風險會帶來直接的營運後果:資料外洩、停機、罰款以及信任流失。本指南以淺白語言解釋每個類別,協助你就自己的應用程式提出正確的問題。
隨著攻擊手法的演變,OWASP 每隔幾年會修訂一次清單。以下類別反映的是已被廣泛確立的 2021 年修訂版,它對多數團隊而言仍是標準參考;即使排名有所變動,其背後的風險依然穩定。
重點摘要
- OWASP Top 10 是網頁應用程式最嚴重安全風險的業界標準清單
- 最主要的類別涉及存取控制、薄弱的加密、注入缺陷,以及在早期所做的不安全設計決策
- 這些風險大多可歸結為幾個根本原因:缺失的檢查、錯誤設定、過時元件以及不足的監控
- 你無需懂技術,也能要求團隊或供應商對每一項風險負責
1. 存取控制失效(Broken Access Control)
含義: 使用者能夠執行或看到本不該被允許的內容,例如透過修改 URL 中的 ID 來檢視其他客戶的資料,或在並非管理員的情況下存取管理功能。
為何重要: 這一直是最常見、危害最大的風險之一,會直接導致資料外洩和未經授權的操作。
向團隊提問: 權限是否針對每個請求都在伺服器端強制執行,而不僅僅是隱藏在介面中?
2. 加密機制失效(Cryptographic Failures)
含義: 敏感資料(密碼、付款資訊、個人資訊)未獲妥善保護,例如在傳輸或儲存時未加密,或使用薄弱或過時的演算法進行保護。
為何重要: 敏感資料外洩會引發違規事件,並且在 GDPR 之下可能帶來罰款和強制通報義務。
向團隊提問: 所有流量是否都經由 HTTPS,敏感資料是否在儲存時使用現代演算法加密?
3. 注入(Injection)
含義: 不可信的輸入被當作命令處理,使攻擊者能夠操縱資料庫(SQL injection)或執行非預期的操作。跨網站指令碼(XSS)也包含在內。
為何重要: 注入可能外洩或摧毀整個資料庫,並劫持使用者工作階段。
向團隊提問: 我們是否使用參數化查詢,並對所有使用者輸入進行驗證和編碼?
4. 不安全的設計(Insecure Design)
含義: 安全弱點存在於設計本身,而不僅僅在程式碼中,例如一個可被濫用的密碼重設流程,或一個信任瀏覽器所傳價格的結帳流程。
為何重要: 設計缺陷無法在事後透過修補程式消除;它們需要重新構思該功能。安全必須在一開始就納入考量。
向團隊提問: 我們是否在建置重要功能之前進行威脅建模?
5. 安全設定錯誤(Security Misconfiguration)
含義: 不安全的預設設定、未關閉的多餘功能、過於詳細的錯誤訊息,或缺失的安全標頭。
為何重要: 設定錯誤極為常見,且往往很容易被攻擊者發現並利用。
向團隊提問: 是否已刪除預設帳戶、停用未使用的功能,並設定好安全標頭?
6. 易受攻擊和過時的元件(Vulnerable and Outdated Components)
含義: 應用程式依賴於存在已知漏洞且未更新的第三方函式庫、框架或外掛。
為何重要: 攻擊者會大規模掃描已知的易受攻擊元件。許多重大外洩都可追溯到某個未修補的相依套件。
向團隊提問: 我們是否追蹤各項相依套件,並在漏洞被揭露時及時更新它們?
7. 身分辨識與驗證失效(Identification and Authentication Failures)
含義: 薄弱的登入系統:糟糕的密碼政策、缺乏對暴力破解(brute force)的防護、薄弱的工作階段管理,或缺失多因素驗證。
為何重要: 遭入侵的帳戶是通往資料和功能的直接通道。
向團隊提問: 我們是否提供多因素驗證(MFA),並防範撞庫(credential stuffing)和暴力破解?
8. 軟體和資料完整性失效(Software and Data Integrity Failures)
含義: 信任來自未經驗證來源的程式碼、更新或資料,例如不安全的軟體更新機制或遭入侵的建置管線(供應鏈風險)。
為何重要: 供應鏈攻擊日益增多,可透過單一受信任的管道一次危及眾多受害者。
向團隊提問: 我們是否驗證更新和相依套件的完整性,並保護我們的建置與部署管線?
9. 安全記錄與監控失效(Security Logging and Monitoring Failures)
含義: 不記錄與安全相關的事件,或不加以監看,導致攻擊在很長時間內未被察覺。
為何重要: 你無法應對看不見的東西。監控不到位正是外洩往往數月未被發現的原因。
向團隊提問: 我們是否記錄安全事件,並對可疑活動發出告警?
10. 伺服器端請求偽造(SSRF)
含義: 攻擊者誘使伺服器向其本不該存取的系統發出請求,從而可能觸及本不應對外公開的內部服務。
為何重要: SSRF 可能外洩內部基礎架構和雲端中繼資料,並曾出現在多起重大外洩中。
向團隊提問: 我們是否驗證並限制伺服器被允許呼叫的目標位址?
關鍵要點
- OWASP Top 10 是網頁應用程式安全風險的標準參考;大多數項目都可歸結為缺失的檢查、錯誤設定、過時元件和薄弱的監控。
- 存取控制、加密、注入和不安全的設計是影響最大的類別。
- 你無需懂技術,也能要求團隊或供應商對每一項風險負責;上述問題是一個良好的起點。
- 了解自身現況最可靠的方式是進行獨立測試。
依據 OWASP Top 10 測試你的網站
上述問題開啟了對話;專業的測試才能給出答案。應用程式安全測試 結合了靜態程式碼分析、動態執行階段測試、相依套件與供應鏈稽核,以及驗證和加密審查,在你的真實應用程式中找出這些風險,並提供依風險分級的結果與修補指引。若想更全面地了解如何保護一個正在運行的網站,請參閱面向英國企業的網站安全稽核指南 。
常見問題(FAQ)
OWASP Top 10 是什麼? 它是一份定期更新的清單,列出十項最嚴重的網頁應用程式安全風險,由 Open Worldwide Application Security Project (OWASP) 發布。它是為應用程式安全工作排定優先順序的業界標準參考。
OWASP Top 10 是一套完整的安全標準嗎? 不是。它是一份涵蓋最嚴重風險的意識提升與優先排序文件,而非鉅細靡遺的檢查清單。請將其作為起點,並搭配更深入的測試和安全開發實務。
OWASP Top 10 多久更新一次? 隨著資料和攻擊手法的變化,OWASP 每隔幾年會修訂一次。類別會演進並重新排序,但背後的風險大體保持穩定,因此在兩次修訂之間相關概念依然適用。
哪一項 OWASP 風險最危險? 這因應用程式而異,但存取控制失效和注入在歷史上一直屬於最常見、危害最大的風險之列。對你而言正確的優先順序,取決於你的具體應用程式是如何建置和暴露的。
我如何知道自己的應用程式是否受影響? 唯一可靠的方式是測試:針對你真實的程式碼庫和正在運行的應用程式進行靜態分析、動態測試和相依套件稽核。一次專業的應用程式安全測試會將你的風險對應到這些類別,並給出依優先順序排列的修補方案。
評論