A1 注入 Injection
Web安全頭號大敵学搜。注入攻擊漏洞往往是應(yīng)用程序缺少對輸入進行安全性檢查所引起的娃豹。攻擊者把一些包含攻擊代碼當做命令或者查詢語句發(fā)送給解釋器憔涉,這些惡意數(shù)據(jù)可以欺騙解釋器讨勤,從而執(zhí)行計劃外的命令或者未授權(quán)訪問數(shù)據(jù)箭跳。注入漏洞通常能SQL查詢、LDAP查詢潭千、OS命令谱姓、程序參數(shù)等中出現(xiàn)。
防范:
1.使用安全的API刨晴,避免使用解釋器或提供參數(shù)化的接口(prepared statements屉来,or stored procedures)
2.使用白名單來規(guī)范化的輸入驗證方法
3.對輸入的特殊字符進行Escape轉(zhuǎn)義處理
4.權(quán)限最小化,減輕被注入的影響
A2 失效的身份認證和會話管理? Broken Authentication and Session Management
與認證和會話管理相關(guān)的應(yīng)用程序功能往往得不到正確管理狈癞,這就導(dǎo)致攻擊者破壞密碼茄靠、密匙、會話令牌或利用實施漏洞冒充其他用戶身份蝶桶。
防范:使用強大的認證和會話管理控制-OWASP的應(yīng)用安全驗證標準慨绳。
1.使用簡單集中標準化的認證方式;
2.確保SSL在任何時候都會保護會話真竖;
3.使用會話管理功能脐雪;
會話管理:當用戶不操作時,系統(tǒng)必須自動終止超時會話恢共,必須有時間限制战秋;必須提供退出功能,允許用戶強制退出會話旁振;會話標識足夠隨機获询,防止攻擊者猜測到標識涨岁;用戶登錄后必須分配新的會話標識,不使用用戶未登錄前所使用的標識吉嚣,防止會話攻擊
A3 跨站腳本-XSS
XSS的出現(xiàn)時間跟SQL差不多梢薪,是最普遍的web應(yīng)用安全漏洞。當應(yīng)用程序在發(fā)送給瀏覽器的頁面中包含用戶提供的數(shù)據(jù)尝哆,但沒有經(jīng)過適當驗證或轉(zhuǎn)譯秉撇,就會導(dǎo)致跨站腳本漏洞。XSS允許攻擊者在受害者的瀏覽器中執(zhí)行腳本秋泄,這些腳本可以劫持用戶會話琐馆,破壞網(wǎng)站,或?qū)⒂脩糁囟ㄏ虻綈阂庹军c恒序。
防范:
1.對所有不可信的輸入數(shù)據(jù)進行恰當?shù)霓D(zhuǎn)義escape
2.使用白名單的具有恰當?shù)囊?guī)范化解碼功能的輸入驗證方法
3.使用內(nèi)容安全策略(CSP)來抵御整個站點的攻擊
A4 不安全的直接對象引用 Insecurity Direct Object Reference
當開發(fā)人員公開對內(nèi)部實現(xiàn)對象(如文件瘦麸、目錄或數(shù)據(jù)庫鍵)的引用時,就會出現(xiàn)直接對象引用歧胁。如果沒有訪問控制檢查或其他保護滋饲,攻擊者可以操縱這些引用來訪問未經(jīng)授權(quán)的數(shù)據(jù)。
防范:
1.使用基于用戶或會話的間接對象訪問, 防止攻擊者直接攻擊未授權(quán)資源.
2.訪問檢查:對任何來自不受信源所使用的所有直接對象引用都進行訪問控制檢測喊巍,確保用戶對要求的對象有訪問權(quán)限
A5 安全配置錯誤 Security Misconfiguration
良好的安全性需要為應(yīng)用程序屠缭、框架、應(yīng)用服務(wù)器崭参、web服務(wù)器呵曹、數(shù)據(jù)庫服務(wù)器和平臺定義和部署安全配置。默認值通常是不安全的何暮。另外奄喂,軟件應(yīng)該保持更新。攻擊者通過訪問默認賬戶海洼、未使用的網(wǎng)頁砍聊、未安裝補丁的漏洞、未被保護的文件和目錄等贰军,以獲得對系統(tǒng)未授權(quán)的訪問。
防范:
1.及時了解并部署每個環(huán)境的軟件更新和補丁信息蟹肘,包括所有的代碼庫词疼。(自動化安裝部署)
2.統(tǒng)一出錯處理機制,錯誤處理會向用戶顯示堆棧跟蹤或其他過于豐富的錯誤消息信息帘腹。
3.使用提供有效分離和安全性強大的應(yīng)用程序架構(gòu)贰盗。
A6 敏感信息泄露 Sensitive Data Exposure
保護與加密敏感數(shù)據(jù)已經(jīng)成為網(wǎng)絡(luò)應(yīng)用的最重要的組成部分。最常見的漏洞是應(yīng)該進行加密的數(shù)據(jù)沒有進行加密阳欲。使用加密的情況下常見問題是不安全的密鑰和使用弱算法加密舵盈。
防范:
1.加密存儲和傳輸所有的敏感數(shù)據(jù)
2.確保使用合適強大的標準算法和密鑰陋率,并且密鑰管理到位
3.確保使用密碼專用算法存儲密碼
4.及時清除沒有必要存放的重要的/敏感數(shù)據(jù)
5.禁用自動收集敏感數(shù)據(jù),禁用包含敏感數(shù)據(jù)的頁面緩存
加密方法:采用非對稱加密算法管理對稱加密算法密鑰,用對稱加盟算法加密數(shù)據(jù)秽晚。
A7 缺少功能級訪問控制
大多數(shù)web應(yīng)用程序在實現(xiàn)UI中可見的功能之前,都要驗證功能級別的訪問權(quán)限赴蝇。但是菩浙,當訪問每個函數(shù)時,應(yīng)用程序需要在服務(wù)器上執(zhí)行相同的訪問控制檢查句伶。如果請求沒有得到驗證劲蜻,攻擊者將能夠偽造請求蚀腿,以便在沒有適當授權(quán)的情況下訪問功能奔则。
防范:
1.檢查管理權(quán)限的過程并確保能夠容易進行升級和審計,切忌硬編碼光督。
2.默認缺省情況下楚堤,應(yīng)該拒絕所有訪問的執(zhí)行權(quán)限疫蔓。
3.對于每個功能的訪問,需要明確的角色授權(quán)钾军。檢查每個功能分配的權(quán)限合理有效鳄袍。
A8 跨站請求偽造 CSRF
利用了網(wǎng)站允許攻擊者預(yù)測特定操作的所有細節(jié)這一特點。由于瀏覽器自動發(fā)送會話cookie等認證憑證吏恭,導(dǎo)致攻擊者能夠創(chuàng)建惡意的web頁面來偽造請求拗小。這些偽造的請求很難和合法的請求區(qū)分開。CSRF通過偽裝來自受信任用戶的請求來利用受信任的網(wǎng)站樱哼。
1.給每個HTTP請求添加一個不可預(yù)測的令牌哀九,并保證該令牌對每個用戶會話來說是唯一性。最好是將獨有的令牌包含在隱藏字段中搅幅,通過HTTP請求發(fā)送阅束,避免在URL中暴露出來。
2.要求用戶重新認證或者判斷他們是一個真實的用戶茄唐。
A9 使用含有已知漏洞的組件
開發(fā)人員使用的組件也會含有漏洞息裸,這些漏洞能夠被自動化工具發(fā)現(xiàn)和利用。然后攻擊者根據(jù)需要定制攻擊代碼并實施攻擊沪编。
防范:
1.標識正在使用的所有組件和版本呼盆,包括所有依賴項
2.及時關(guān)注這些組件的安全信息并保證他們是最新的。
3.建立使用組件的安全策略蚁廓,禁止使用未經(jīng)安全評估的組件访圃。
4.在適當情況下,對組件進行安全封裝相嵌,精簡不必要的功能腿时,封裝易受攻擊部分
A10 未驗證的重定向和轉(zhuǎn)發(fā)
應(yīng)用程序經(jīng)常將用戶重定向到其他網(wǎng)頁况脆,或以類似的方式進行內(nèi)部轉(zhuǎn)發(fā)。當目標網(wǎng)頁是通過一個未驗證的參數(shù)來指定時批糟,就容易被攻擊者利用格了。攻擊者通過誘使受害人去點擊未經(jīng)驗證的重定向鏈接,從而利用不安全的轉(zhuǎn)發(fā)繞過安全檢測跃赚。攻擊者通過重定向可以試圖安裝惡意軟件或者誘使受害人泄露密碼等敏感信息笆搓,通過轉(zhuǎn)發(fā)可以繞過訪問控制。
防范:
1.避免使用重定向和轉(zhuǎn)發(fā)
2.如果使用了重定向和轉(zhuǎn)發(fā)纬傲,則不要在確定目標時涉及到用戶參數(shù)满败。
3.如果無法避免使用目標參數(shù),則應(yīng)確保目標參數(shù)值對于當前用戶是有效的并已授權(quán)叹括。