安全風險:
可能會竊取或操縱客戶會話和 cookie,它們可能用於模仿合法使用者,從而使黑客能夠以該使用者身份檢視或變更使用者記錄以及執行事務
可能原因
應用程式使用的認證方法不充分
技術描述
「跨站點偽造請求 (csrf)」攻擊可讓黑客以受害者的名義在易受攻擊的站點上執行操作。當易受攻擊的站點未適當驗證請求**時,便可能出現這個攻擊。
這個漏洞的嚴重性取決於受影響的應用程式的功能,例如,對搜尋頁面的 csrf 攻擊,嚴重性低於對轉帳頁面或概要更新頁面的 csrf 攻擊。
這項攻擊的執行方式,是強迫受害者的瀏覽器向易受攻擊的站點發出 http 請求。如果使用者目前已登入受害者站點,請求會自動使用使用者的憑證(如會話 cookie、使用者的 ip 位址,以及其他瀏覽器認證方法)。攻擊者利用這個方法來偽造受害者的身份,再代替他來提交操作。換句話來說,易受攻擊的站點未採取適當措施來驗證使用者實際是否想執行特定操作。
強迫受害者傳送非預期的請求,方法有許多種:
- 通過電子郵件向受害者傳送易受攻擊應用程式的惡意鏈結。
- 在黑客的 web 頁面上,放置乙個易受攻擊的站點的熱鏈結(如影象或幀)。
- 在公共論壇中,張貼易受攻擊站點的鏈結。
- 利用站點(或另乙個站點)的「跨站點指令碼編制」或「鏈結注入」漏洞,將瀏覽器自動重定向到易受攻擊的站點。
如果攻擊者利用易受攻擊的站點本身的「鏈結注入」漏洞,可以增加使用者通過站點認證的可能性,進而增加攻擊成功的可能性。
例如,攻擊者可以利用上述任何選項來**受害者檢視含有下列條目的頁面:
這會使受害者的瀏覽器自動請求 url 及瀏覽器的當前憑證。
如果這個銀行業站點易受到 csrf 攻擊,它會根據應用程式邏輯,從受害者的帳戶中,將 1000 美元轉賬到 john 的銀行帳戶。
「跨站點偽造請求」攻擊也稱為 csrf(發音為 c-serf)、xsrf、「跨站點偽造引用」、「單鍵攻擊」以及「會話騎乘」。
您可以利用下列方式來驗證您的應用程式是否易受到 csrf 攻擊:
含有使用者在不知不覺中提交的請求所能直接訪問的敏感操作的應用程式,被視為很容易遭受 csrf 攻擊。csrf 也可能出現在登入頁面和登出頁面上。由於攻擊者可以偽造來自受害者的連續登出請求,因此 csrf 可能導致服務拒絕。在登入頁面上,csrf 可以允許攻擊者使用包含攻擊者使用者名稱和密碼的偽造請求來將客戶機登入到攻擊者的賬戶中。登入 csrf 攻擊會帶有嚴重的後果,這取決於其他站點行為。例如,如果站點保留了使用者操作的歷史記錄(例如搜尋歷史記錄),那麼攻擊者將能夠在易受攻擊的站點上檢視受害者之前執行的操作。
修訂建議 一般
如果要避免 csrf 攻擊,每個請求都應該包含唯一標識,它是攻擊者所無法猜測的引數。 建議的選項之一是新增取自會話 cookie 的會話標識,使它成為乙個引數。伺服器必須檢查這個引數是否符合會話 cookie,若不符合,便廢棄請求。 攻擊者無法猜測這個引數的原因是應用於 cookie 的「同源策略」,因此,攻擊者無法偽造乙個虛假的請求,讓伺服器誤以為真。 攻擊者難以猜測且無法訪問的任何秘密(也就是無法從其他域訪問),都可用來替換會話標識。 這可以防止攻擊者設計看似有效的請求。
建議使用者每次登入時需使用新的會話標識。應用程式實現上就是在登入模組,新增以下**,即使用者登入後,重新生成會話。
request.getsession(true);//生成新會話
跨站點請求偽造解決方案
前一篇部落格介紹了啟用了不安全的http方法的解決方案,有興趣請移步啟用了不安全的http方法解決方案。首先,什麼是跨站點請求偽造?跨站點請求偽造 csrf cross site request forgery 是一種網路攻擊方式。說的白話一點就是,別的站點偽造你的請求,最可怕的是你還沒有察覺並且接...
跨站點請求偽造解決方案
跨站點請求偽造 token 前一篇部落格介紹了啟用了不安全的http方法的解決方案,有興趣請移步 首先,什麼是跨站點請求偽造?跨站點請求偽造 csrf cross site request forgery 是一種網路攻擊方式。說的白話一點就是,別的站點偽造你的請求,最可怕的是你還沒有察覺並且接收了。...
CSRF跨站點請求偽造原理及防禦
csrf攻擊原理比較簡單,如圖1所示。其中web a為存在csrf漏洞的 web b為攻擊者構建的惡意 user c為web a 的合法使用者。圖1 csrf攻擊原理 1.使用者c開啟瀏覽器,訪問受信任 a,輸入使用者名稱和密碼請求登入 a 2.在使用者資訊通過驗證後,a產生cookie資訊並返回給...