OWASP Top 10 概覽
什麼是 OWASP?
OWASP (Open Web Application Security Project) 是非營利組織,每 3-4 年發布一次 Web 安全風險排名。
2021 Top 10(精簡版)
| 排名 | 漏洞 | 說明 | |------|------|------| | 1 | Broken Access Control | 使用者可以存取不該存取的資源 | | 2 | Cryptographic Failures | 資料未加密或加密不當 | | 3 | Injection | SQL Injection、NoSQL Injection | | 4 | Insecure Design | 架構設計階段未考慮安全 | | 5 | Security Misconfiguration | 預設帳密、未關閉除錯模式 | | 6 | Vulnerable Components | 使用有已知漏洞的套件 | | 7 | Auth Failures | 身份驗證實作不當 | | 8 | Data Integrity Failures | 未驗證資料完整性 | | 9 | Logging Failures | 缺少監控與日誌 | | 10 | SSRF | 伺服器端請求偽造 |
Vibe Prompt
「幫我檢查一個 Next.js 專案是否存在 OWASP Top 10 漏洞,逐項分析並給出修復建議。」
關鍵要點
- ✅ OWASP Top 10 = Web 應用安全最具權威的風險列表
- ✅ SQL Injection:永遠使用參數化查詢,不要串接字串
- ✅ XSS:對使用者輸入進行轉義(Escape),使用 CSP Header
- ✅ CSRF:使用 SameSite Cookie + CSRF Token 雙重保護
- ✅ 安全是設計階段就要考慮的,不是上線前才補
OWASP Top 10 (2021)
| 排名 | 漏洞 | 說明 | |:----:|------|------| | A01 | 權限控制失效 | IDOR、越權 | | A02 | 加密機制失效 | 未加密敏感資料 | | A03 | 注入攻擊 | SQL、NoSQL、Command Injection | | A04 | 不安全設計 | 安全未在設計階段考慮 | | A05 | 安全配置錯誤 | 預設密碼、未關閉除錯模式 | | A06 | 脆弱元件 | 使用有已知漏洞的套件版本 | | A07 | 認證與身分管理失效 | 弱密碼、Session 固定 | | A08 | 資料完整性失效 | 不安全的反序列化 | | A09 | 日誌與監控不足 | 無法偵測攻擊 | | A10 | SSRF | 伺服器端請求偽造 |
漏洞風險評級
| 嚴重程度 | 定義 | 回應時間 | 範例 | |:--------:|------|:--------:|------| | 🔴 Critical | 可直接導致系統完全淪陷 | 24 小時內修復 | RCE、SQL Injection | | 🟠 High | 可導致敏感資料外洩 | 72 小時內修復 | IDOR、XSS | | 🟡 Medium | 在特定條件下可利用 | 2 週內修復 | CSRF、開放重新定向 | | 🟢 Low | 資訊洩漏,難以直接利用 | 下個 Sprint | 版本資訊暴露 |
漏洞評分標準 (CVSS v3.1)
| 評分範圍 | 嚴重程度 | |:--------:|:--------:| | 9.0-10.0 | Critical | | 7.0-8.9 | High | | 4.0-6.9 | Medium | | 0.1-3.9 | Low |
實戰:建立安全程式碼審查清單
## PR Review 安全檢查清單
- [ ] 是否使用了參數化查詢?(非串接字串)
- [ ] 使用者輸入是否有驗證與轉義?
- [ ] API 端點是否有權限檢查?
- [ ] 敏感資料是否加密儲存?
- [ ] 是否使用了 HTTPS?
- [ ] 是否有設定 CSP Header?
- [ ] 是否有設定 CORS 白名單?
- [ ] 依賴套件是否有已知漏洞?
OWASP Top 10:Web 安全的必備知識
OWASP Top 10 是 Open Web Application Security Project 每 3-4 年發布的 Web 安全風險排名。它不是一個標準,而是業界共識——讓開發團隊知道該優先處理哪些安全問題。
2021 年的 Top 3
| 排名 | 風險 | 說明 | |:----|:----|:----| | A01 | Broken Access Control | 權限控制失效——最常見也最嚴重的問題 | | A02 | Cryptographic Failures | 加密失效——沒用 HTTPS、密碼明存 | | A03 | Injection | 注入攻擊——SQL、NoSQL、OS Command |
為什麼 OWASP Top 10 很重要?
- 業界語言:跟客戶或團隊溝通安全議題時,有共同的名詞
- 優先級排序:先修最常見、影響最大的漏洞
- 測試依據:滲透測試和掃描工具都以此為基準
下一章預告:SQL Injection
Top 10 中 A03 的 Injection 是 Web 安全中最經典也最危險的漏洞。下一章深入 SQL Injection——如何發生、如何利用、如何防護。