網站安全架構的設計要素 (ESAPI)
這篇文章說明一個網站的安全架構設計應該要包含哪些安全控管要素,
還有這些安全控管的要素在整個網站流程中所扮演的角色。主要分為下列幾大部分
- Authentication
- Authorization
- Input Validation and Encoding
- Logging
- Encryption
- Communication Session Control
(主要參考來源 OWASP ESAPI)
Authentication
Authentication 基本要包含的要素列舉如下:
• Locale• Roles• Disable / Enable• Locked / Unlocked• CSRF Tokens• Last Login• Last Invalid Login• Password Age• Screen Name• Failed Log In Count
• Last Logged in Host |
• Log In / Log Out• Password Verification• Create User• Password Generation• Change Password• Expirations• Logging• Per User Session• Anonymous User |
Authorization
Authorization 主要目的在於確認該帳號有存取該資源的權限。
在商業邏輯層、在資料層、在後端服務的存取等都要進行權限的檢察。
Direct Object Reference
這個安全控管的目的在於確定 Report123.xls (如範例下圖)是需要經過授權才可以存取
編碼與資料輸入驗證
Encoding 輸入驗證的目的在於防止駭客各式的 Injection,特別是 XSS 攻擊
Encoding 的主要目的在於避免 XSS攻擊,相關的 Security Framework也可以參考:
https://www.owasp.org/index.php/Category:OWASP_AntiSamy_Project
https://www.owasp.org/index.php/OWASP_Java_HTML_Sanitizer_Project
Encryption
敏感性資料的加密語解密
Http Session的安全設計
安全的連線設計應考量 Header, Cookie, SessionID, CSRF Token 等安全設計。
Logging
Logging 主要是針對異常狀況 Exception 記錄下來,方便未來追蹤並且改善安全設計機制。
輸入的驗證
前端與後端輸入的驗證可以阻絕許多不必要的攻擊,資料輸入的有效性驗證範圍很廣,
例如:檔名、檔案路徑、參數、輸入的編碼等
整體安全設定
- Select crypto algorithms
- Select encoding algorithms
- Define sets of characters
- Define global validation rules
- Select logging preferences
- Establish intrusion detection thresholds and actions
- Etc…
入侵的基本偵測與防護
有現成的 API Framework 可以套用嗎?
SHIRO http://shiro.apache.org/
OWASP ESAPI https://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API
AntiSamy: https://www.owasp.org/index.php/Category:OWASP_AntiSamy_Project
HTML_Sanitizer: https://www.owasp.org/index.php/OWASP_Java_HTML_Sanitizer_Project
另外可以參考這篇文章 https://software-security.sans.org/blog/2011/06/06/safer-software-through-secure-frameworks