OWASP TOP 10漏洞及防範

A1 注入 Injection

Web安全頭號大敵。注入攻擊漏洞往往是應用程序缺少對輸入進行安全性檢查所引起的。攻擊者把一些包含攻擊代碼當做命令或者查詢語句發送給解釋器,這些惡意數據可以欺騙解釋器,從而執行計劃外的命令或者未授權訪問數據。注入漏洞通常能SQL查詢、LDAP查詢、OS命令、程序參數等中出現。

SQL注入實例

防範:

1.使用安全的API,避免使用解釋器或提供參數化的接口(prepared statements,or stored procedures)

2.使用白名單來規範化的輸入驗證方法

3.對輸入的特殊字符進行Escape轉義處理

4.權限最小化,減輕被注入的影響

A2 失效的身份認證和會話管理  Broken Authentication and Session Management

與認證和會話管理相關的應用程序功能往往得不到正確管理,這就導致攻擊者破壞密碼、密匙、會話令牌或利用實施漏洞冒充其他用戶身份。

案例

防範:使用強大的認證和會話管理控制-OWASP的應用安全驗證標準。

1.使用簡單集中標準化的認證方式;

2.確保SSL在任何時候都會保護會話;

3.使用會話管理功能;

會話管理:當用戶不操作時,系統必須自動終止超時會話,必須有時間限制;必須提供退出功能,允許用戶強制退出會話;會話標識足夠隨機,防止攻擊者猜測到標識;用戶登錄後必須分配新的會話標識,不使用用戶未登錄前所使用的標識,防止會話攻擊

A3 跨站腳本-XSS

XSS的出現時間跟SQL差不多,是最普遍的web應用安全漏洞。當應用程序在發送給瀏覽器的頁面中包含用戶提供的數據,但沒有經過適當驗證或轉譯,就會導致跨站腳本漏洞。XSS允許攻擊者在受害者的瀏覽器中執行腳本,這些腳本可以劫持用戶會話,破壞網站,或將用戶重定向到惡意站點。

XSS案例

防範:

1.對所有不可信的輸入數據進行恰當的轉義escape

2.使用白名單的具有恰當的規範化解碼功能的輸入驗證方法

3.使用內容安全策略(CSP)來抵禦整個站點的攻擊

A4 不安全的直接對象引用 Insecurity Direct Object Reference

當開發人員公開對內部實現對象(如文件、目錄或數據庫鍵)的引用時,就會出現直接對象引用。如果沒有訪問控制檢查或其他保護,攻擊者可以操縱這些引用來訪問未經授權的數據。

案例

防範:

1.使用基於用戶或會話的間接對象訪問, 防止攻擊者直接攻擊未授權資源.

2.訪問檢查:對任何來自不受信源所使用的所有直接對象引用都進行訪問控制檢測,確保用戶對要求的對象有訪問權限

A5 安全配置錯誤 Security Misconfiguration

良好的安全性需要爲應用程序、框架、應用服務器、web服務器、數據庫服務器和平臺定義和部署安全配置。默認值通常是不安全的。另外,軟件應該保持更新。攻擊者通過訪問默認賬戶、未使用的網頁、未安裝補丁的漏洞、未被保護的文件和目錄等,以獲得對系統未授權的訪問。

沒有考慮安全配置的案例

防範:

1.及時瞭解並部署每個環境的軟件更新和補丁信息,包括所有的代碼庫。(自動化安裝部署)

2.統一出錯處理機制,錯誤處理會向用戶顯示堆棧跟蹤或其他過於豐富的錯誤消息信息。

3.使用提供有效分離和安全性強大的應用程序架構。

A6 敏感信息泄露 Sensitive Data Exposure

保護與加密敏感數據已經成爲網絡應用的最重要的組成部分。最常見的漏洞是應該進行加密的數據沒有進行加密。使用加密的情況下常見問題是不安全的密鑰和使用弱算法加密。

敏感信息泄露案例

防範:

1.加密存儲和傳輸所有的敏感數據

2.確保使用合適強大的標準算法和密鑰,並且密鑰管理到位

3.確保使用密碼專用算法存儲密碼

4.及時清除沒有必要存放的重要的/敏感數據

5.禁用自動收集敏感數據,禁用包含敏感數據的頁面緩存

加密方法:採用非對稱加密算法管理對稱加密算法密鑰,用對稱加盟算法加密數據。

對稱、非對稱算法對比

A7 缺少功能級訪問控制

大多數web應用程序在實現UI中可見的功能之前,都要驗證功能級別的訪問權限。但是,當訪問每個函數時,應用程序需要在服務器上執行相同的訪問控制檢查。如果請求沒有得到驗證,攻擊者將能夠僞造請求,以便在沒有適當授權的情況下訪問功能。

防範:

1.檢查管理權限的過程並確保能夠容易進行升級和審計,切忌硬編碼。

2.默認缺省情況下,應該拒絕所有訪問的執行權限。

3.對於每個功能的訪問,需要明確的角色授權。檢查每個功能分配的權限合理有效。

A8 跨站請求僞造 CSRF

利用了網站允許攻擊者預測特定操作的所有細節這一特點。由於瀏覽器自動發送會話cookie等認證憑證,導致攻擊者能夠創建惡意的web頁面來僞造請求。這些僞造的請求很難和合法的請求區分開。CSRF通過僞裝來自受信任用戶的請求來利用受信任的網站。

CSRF案例

1.給每個HTTP請求添加一個不可預測的令牌,並保證該令牌對每個用戶會話來說是唯一性。最好是將獨有的令牌包含在隱藏字段中,通過HTTP請求發送,避免在URL中暴露出來。

2.要求用戶重新認證或者判斷他們是一個真實的用戶。

A9 使用含有已知漏洞的組件

開發人員使用的組件也會含有漏洞,這些漏洞能夠被自動化工具發現和利用。然後攻擊者根據需要定製攻擊代碼並實施攻擊。

防範:

1.標識正在使用的所有組件和版本,包括所有依賴項

2.及時關注這些組件的安全信息並保證他們是最新的。

3.建立使用組件的安全策略,禁止使用未經安全評估的組件。

4.在適當情況下,對組件進行安全封裝,精簡不必要的功能,封裝易受攻擊部分

A10 未驗證的重定向和轉發

應用程序經常將用戶重定向到其他網頁,或以類似的方式進行內部轉發。當目標網頁是通過一個未驗證的參數來指定時,就容易被攻擊者利用。攻擊者通過誘使受害人去點擊未經驗證的重定向鏈接,從而利用不安全的轉發繞過安全檢測。攻擊者通過重定向可以試圖安裝惡意軟件或者誘使受害人泄露密碼等敏感信息,通過轉發可以繞過訪問控制。

案例

防範:

1.避免使用重定向和轉發

2.如果使用了重定向和轉發,則不要在確定目標時涉及到用戶參數。

3.如果無法避免使用目標參數,則應確保目標參數值對於當前用戶是有效的並已授權。



作者:AndyMinM
鏈接:https://www.jianshu.com/p/1440c2035b28
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯繫作者獲得授權並註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章