【資安】OWASP Top 10

引言

隨科技發展下,身邊周遭都是資訊的應用。在享受資訊帶來的便利時,另一面卻是資安的警告。且不久前好友的 Ubuntu 被駭入,只因為「弱密碼」(12345678)被暴力破解,讓我覺得資安的意識應該要多多加強。

OWASP Top 10

  1. Broken Access Control(XSS)
  2. Cryptographic Failures
  3. Injection
  4. Insecure Design
  5. Security Misconfiguration
  6. Vulnerable and Outdated Components
  7. Identification and Authentication Failures
  8. Software and Data Integrity Failures
  9. Security Logging and Monitoring Failures
  10. Server-Side Request Forgery (SSRF)

1. Broken Access Control 權限控制失效

導致未經授權的用戶可以訪問敏感資料或功能,從而取得非預期提供的資訊。

範例:

不小心或刻意更改了 Session、Cookie 等紀錄身分的訊息,而成功越權瀏覽或操作,最常見的就是學校學生系統。

1
2
https://example.com/userinfo/username=webber
https://example.com/userinfo/username=admin

若發現漏洞,請勿做任意操作,容易觸法!

防範方式

  • 嚴格限制存取權限。
  • 定期測試存取控制規則。

2. Cryptographic Failures 加密機制失效

敏感資料未正確加密,或使用不安全的加密方法。

錯誤範例

  • 使用過時的加密演算法(如 MD5)
  • 未加密的敏感數據傳輸。

正確範例

  • 使用現今較安全的加密方式
  • 密碼 -> 雜湊/加密 -> 資料庫

防範方式

  • 使用當代強加密方法(如 AES 或 TLS 1.2/1.3)
  • 避免硬編碼加密密鑰。

3. Injection 注入式攻擊

攻擊者透過未經驗證的輸入操縱查詢或指令(如 SQL injection、XSS 等)。

範例:

最常見的 XSS(Cross-Site Scripting)若成功觸發,表示駭客能夠輕易竊取 Cookie、釣魚攻擊或監視等等。

1
<script>alert(1);</script>

切勿隨意嘗試,小心觸法!

防範方式

  • 使用現代框架(如 React、Angular)自帶的防範機制,避免直接操作 DOM。
  • 建立 HTML 的白名單標籤。
  • 過濾並驗證用戶輸入。

4. Insecure Design 不安全設計

應用程式架構或設計缺乏安全考量。這比較不像是一種漏洞,算是一種人為失誤,未考量清楚資安問題而間接導致資安漏洞。

錯誤範例

假設駭客嘗試輸入一對帳密,此系統提示提供駭客有利訊息,表示這個帳號確實有人使用,駭客只需暴力破解密碼即可。





系統提示:密碼錯誤

正確做法

系統提示:使用者名稱或密碼有誤。

加強做法

再用 CAPTCHA 驗證或 2FA。

防範方式

  • 在設計階段進行安全審查。
  • 採用安全架構模式。

5. Security Misconfiguration 安全設定缺陷

不當的文件配置或任意權限使應用程式暴露在攻擊風險中。

錯誤範例

1
2
3
4
https://example.com/.git
https://example.com/.env
https://example.com/.htaccess
https://example.com/access.log

正確做法

敏感的配置內容都應該要避免公開,甚至能減少有這些敏感訊息都要盡量減少。也請勿將所有檔案權限改寫為 777。

防範方式

  • 關閉不必要的功能或服務。
  • 定期檢查配置安全性。

6. Vulnerable and Outdated Components 危險或過舊的元件

使用具有已知漏洞的第三方元件、框架或作業系統。

錯誤範例

  • Windows 7
  • MySQL 5.5
  • Node.js 10.x

正確做法

使用現今最新最穩定的版本(LTS),因為過去版本不再進行維護,過去的版本漏洞只會越找越多。因此要經常更新套件並維護專案。

防範方式

  • 定期更新依賴元件或系統。
  • 使用漏洞掃描工具。

7. Identification and Authentication Failures 認證及驗證機制失效

使用者身分驗證或管理存在問題。

錯誤範例

  • Token 暴露於 URL
  • 弱密碼(12345678、qwertyuiop)
  • 不能正確的失效 Session

正確做法

使用強化過的密碼(如:至少一個特殊字元、大寫字母、數字)、使用 2FA、Passkey 等等,確保帳號是由帳號本人操作,以及有時限的 Session。

防範方式

  • 實現多因素認證
  • 弱密碼檢查

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

未檢查軟體和資料的完整性,導致可能被惡意操縱。

錯誤範例

  • 使用不受信任的依賴套件
  • 未使用安全協議或未對更新檔案進行簽名驗證
  • 缺乏數據完整性保護

正確做法

  • 對使用的套件進行來源和版本檢查
  • 使用數字簽名或哈希驗證數據和檔案的完整性
  • 對數據做加密檢查驗證

防範方式

  • 驗證軟體更新的簽名
  • 確保 CI/CD 管道的安全性

9. Security Logging and Monitoring Failures 安全日誌及監控失效

缺乏適當的日誌記錄和監控,無法及時發現和回應攻擊。

錯誤範例

  • 無 Log 檔紀錄
  • 日誌內容資訊缺漏
  • 日誌保存時間過短

正確做法

  • 對任意操作都記錄到日誌上
  • 將重要資訊都寫進日誌(IP、操作、日期等)
  • 依法保存日誌時限

防範方式

  • 設置集中式日誌管理。
  • 定期審查安全日誌。

10. Server-Side Request Forgery 伺服端請求偽造

攻擊者誘使伺服器向未經授權的目的地發出請求。

基本原理:

OWASP-SSRF

範例:

OWASP-SSRF-example

防範方式

  • 定期檢查所有目錄及 API 權限
  • 使用安全代理來處理外部請求
標籤(Tags)

資安, Cybersecurity, OWASP