OWASP十大WEB弱點防護守則
《OWASP TOP10》的首要目的就是要指導開發人員、設計人員、架構師、管理人員和企業組織,讓他們認識到最嚴重的WEB應用程序安全弱點所產生的后果,并且提供了防止這些高風險的基本方法。
A1注入
將不受信任的數據作為命令或者查詢的一部分發送到解析器,產生注入SQL注入、OS注入和LDAP注入的缺陷。當用戶提供的數據沒有經過應用程序的驗證過濾或是凈化、動態查詢語句的調用或是惡意數據的直接使用都會導致程序脆弱。
防止:將數據與命令語句、查詢語句分開來。最佳選擇是直接選用安全的API。
A2失效的身份認證
攻擊者獲取數百萬的有效用戶名和密碼的組合或者攻擊沒有過期的會話密鑰。當程序出現允許填充憑證、允許暴力破解、出現總所周知的密碼、暴露URL的ID、會話ID沒有正確的注銷。
防止:使用多因素身份驗證、執行密碼強度檢測、限制登陸次數、使用服務器安全的內置會話管理器
A3敏感數據泄露
攻擊這不直接攻擊密碼而是由于數據加密過程的密鑰生成過弱、使用弱協議、弱密碼導致應該被加密的敏感信息被竊取。
防止:對系統處理、存儲或傳輸的數據進行分類;確保所有敏感數據被加密且使用了最新的標準算法密鑰管理到位;傳輸過程的數據被加密;禁止緩存對包含敏感數據的響應。
A4XML外部實體
攻擊者在XML文檔中添加惡意內容,就能夠攻擊含有缺陷的XML處理器。
防止:盡可能使用簡化數據;及時修復所有的底層XML處理器和庫;在服務器端使用白名單或者使用API安全網關或是監控、防止XXE攻擊。
A5失效的訪問控制
攻擊者通過手動檢測找到訪問控制的缺失并且驗證其功能是否正常或者是某些特定的框架下通過自動檢測訪問控制的缺失實現漏洞攻擊。例如權限提升、元數據操作、修改用戶記錄、以未經通過驗證的身份訪問限制頁面、內容。
防止:除公有資源外,默認拒絕訪問;使用一次性的訪問控制機制;建立訪問控制模型強制執行所有權記錄,不允許用戶創建更改記錄;對API的控制器的訪問進行速率限制降低自動化攻擊攻擊的危害。
A6安全配置錯誤
攻擊者通過未修復的漏洞、訪問默認賬號、不再使用的頁面、未受保護的文件和目錄來取得對系統的未授權的訪問或是了解。比如堆棧缺失安全加固、云服務權限配置錯誤、默認賬戶仍然可用且沒有更改、沒有應用程序的系統進行安全配置。
防止:向客戶端發送安全指令、檢查和修復安全配置項、搭建最小化平臺。
A7跨站腳本
存在三種XSS通常針對用戶的瀏覽器,反射式XSS應用程序、API沒有經過驗證或者是用戶的輸入沒有經過轉義就直接作為了HTML的輸出的一部分導致執行了瀏覽器執行了HTML和javascipt。存儲式XSSAPI或是用戶輸入被存儲下來了并在后期其他用戶或是管理員的界面展示。基于DOM的XSS會動態的將攻擊者可控的內容加入到JS框架中。
防止:將不可信數據與動態的瀏覽器內容分開。
A8不安全的反序列化
攻擊者提供惡意或是篡改過的對象使用應用API變得脆弱。包括對對象和數據結構的攻擊和數據篡改攻擊。
防止:不接受不受信源的序列化對象
A9使用含有已知漏洞的組件
當使用了不知道組件版本的軟件或是過時的沒有進行安全配置的時候容易受到此類攻擊。
防止:移除不使用的、不需要的功能;使用一些軟件來記錄客戶端服務器的依賴庫的版本信息;僅從官方獲取組件并且可以使用簽名機制。
A10不足的日志記錄和監控
攻擊者依靠監控的不足和響應的不足實現攻擊目的。比如:未記錄可審計的事件、沒有利用系統API來監控可以活動、日志僅在本地存儲、沒有定義合理的告警閾值、滲透測試或是掃描工具沒有觸發告警等等。
防止:確保日志的集中管理;確保重要事件能夠被記錄到日志當中;建立有效的監控和告警機制;建立應急響應機制和恢復計劃。