學習 備份
TOP1-注入
簡單來說,注入往往是應用程序缺少對輸入進行安全型檢查所引起的,攻擊者把一些包含指令的數據發送給解釋器,解釋器會把收到的數據轉換成指令執行。常見的注入包括sql注入,--os-shell,LDAP(輕量目錄訪問協議),xpath(XPath即為XML路徑語言,它是一種用來確定XML(標准通用標記語言的子集)文檔中某部分位置的語言),HQL注入等。
危害如下:
注入可以導致數據丟失或被破壞,缺乏可審計性或拒絕服務。注入漏洞有時甚至可導致完全接管主機
如何防范:
1.使用安全的API,避免使用解釋器
2.對輸入的特殊的字符進行ESCAPE轉義處理
例子:LIKE '%M%' ESCAPE ‘M’
使用ESCAPE關鍵字定義了轉義字符“M”,告訴DBMS將搜索字符串“%M%”中的第二個百分符(%)作為實際值,而不是通配符
3.使用白名單來規范化的輸入驗證方法
TOP2-失效的身份認證和會話管理
與認證和會話管理相關的應用程序功能往往得不到正確實施,導致了攻擊者可以破壞密碼,密鑰,會話令牌或實施漏洞冒充其他用戶身份
危害如下:
這些漏洞可能導致部分甚至全部賬戶遭受攻擊,一旦攻擊成功,攻擊者就能執行合法的任何操作
如何防范:
1.使用內置的會話管理功能
2.通過認證的問候
3.使用單一的入口點
4.確保在一開始登錄SSL保護的網頁
TOP3-跨站XSS
跨站腳本是最普遍的web應用安全漏洞。當應用程序在發送給瀏覽器的頁面中包含用戶提供的數據,但沒有經過適當驗證和轉義,就會導致跨站
危害如下:
攻擊者在受害者瀏覽器中執行腳本以劫持用戶會話,插入惡意內容,重定向用戶,使用惡意軟件劫持用戶瀏覽器等
種類:
存儲型,反射型,DOM型
如何防范:
1.驗證輸入
2.編碼輸出(用來確保輸入的字符被視為數據,而不是作為html被瀏覽器所解析)
TOP4-不安全的對象直接引用
意指一個已經授權的用戶通過更改訪問時的一個參數,從而訪問到原本其並沒有得到授權的對象
危害如下:
這種漏洞可以損壞參數所引用的所有數據
如何防范:
1.使用基於用戶或會話的間接對象訪問,這樣可防止攻擊者直接攻擊為授權資源
2.訪問檢查:對任何來自不受信源所使用的所有對象進行訪問控制檢查
3.避免在url或網頁中直接引用內部文件名或數據庫關鍵字
4.驗證用戶輸入和url請求,拒絕包含./ ../的請求
TOP5-偽造跨站請求(CSRF)
跨站請求偽造,利用了網站允許攻擊者預測特定操作所有細節這一特點。由於瀏覽器自動發送會話cookie等認證憑證,導致攻擊者可以創建惡意的web頁面來產生偽造請求。這些偽造的請求很難和合法的請求區分開
危害如下:
攻擊者可以讓受害者用戶修改任何允許修改的數據,執行任何用戶允許的操作,例如修改密碼,登錄注銷等
如何防范:
1.給每個HTTP請求添加一個不可預測的令牌,並保證該令牌對每個用戶會話來說是唯一的。
最好的辦法就是將獨有的令牌包含在隱藏字段中,通過HTTP請求發送,避免在URL中暴露出來
2.要求用戶重新認證或判斷他們是一個真實德用戶
TOP6-安全誤配置
安全配置錯誤可以發生在一個應用程序堆棧的任何層面,包括平台,web服務器,應用服務器,數據庫,架構和自定義的代碼。攻擊者通過訪問默認賬戶,未使用的網頁,未安裝的補丁的漏洞,未被保護的文件和目錄等,以獲得對系統為授權的訪問
危害如下;
系統可能在未知的情況下被完全攻破,用戶數據可能隨着時間被全部盜走或篡改。甚至導致整個系統被完全破壞
如何防范:
1.自動化安裝部署
2.及時了解並部署每個環節的軟件更新和補丁信息
3.實施漏洞掃描和安全審計
TOP7-限制URL訪問失敗(缺少功能級訪問控制)
這個漏洞也是與認證相關的,這種漏洞具體是指在系統已經對url的訪問做了限制的情況下,但這種限制並沒有生效。常見的例子是系統沒有對用戶進行角色的檢查,以及用戶通過修改URL的action並指向未被授權頁面就能訪問該頁面同樣是個漏洞
危害如下:
攻擊者很容易就能把網址改成享有特權的網頁,這樣就可以使用匿名或普通用戶訪問未授保護的私人頁面,從而提升未授權功能和相關數據信息
如何防范:
1.檢查管理權限的過程並確保能夠容易進行升級和審計
2.默認缺省情況下,應該拒絕所有訪問的執行權限。對於每個功能得訪問,需要明確的角色授權
3.檢查每個功能分配的權限合理有效
TOP8-未驗證的重定向和轉發
在Web應用中重定向是極為普通的,並且通常重定向所引發的目的是帶有用戶輸入參數的目的url,而如果這些重定向未被驗證,那么攻擊者就可以引導用戶訪問他們想要用戶訪問的站點
同樣,轉發也是極為普遍的,本質上轉發是在同一個應用中對一個新頁面發送請求,並且有時是用參數來定義目標頁面的。同樣,如果參數未被驗證,那么攻擊者就可以利用其來繞過認證或是授權檢查
危害如下:
攻擊者通過重定向可以試圖安裝惡意軟件或誘使受害人泄露密碼等銘感信息,通過轉發可以繞過訪問限制
如何防范:
1.避免使用重定向和轉發
2.如果使用了,不要在確定目標時涉及到用戶參數
3.如果無法避免使用用戶參數,則應確保目標參數值對於當前用戶是有效的並已授權
如果是需要登錄的,可以從session當中獲取登錄信息,然后判斷
TOP9-應用已知脆弱性的組件
應用程序使用帶有已知漏洞的組件會破壞應用程序防御系統,可能導致嚴重的數據丟失或服務器接管
如何防范:
1.識別正在使用的組件和版本,包括所有的依賴
2.更新組件或引用的庫文件到最新
3.建立安全策略來管理組件的使用
TOP10-敏感信息暴露
這個好像沒什么可說的,就注重對敏感數據的保護即可