1. 程式人生 > >java web 安全防護1-CSRF(Cross-site request forgery 跨站請求偽造)

java web 安全防護1-CSRF(Cross-site request forgery 跨站請求偽造)

參考https://www.aliyun.com/zixun/wenji/1280636.html

參考https://www.cnblogs.com/suizhikuo/p/4545981.html

這兩篇文章 很全。介紹了CSRF的概念。這裡即不贅述了。

這裡截取了主要的概要說明,很生動的介紹了CSRF:

{

CSRF(Cross-site request forgery 跨站請求偽造,也被稱成為“one click attack”或者session riding,通常縮寫為CSRF或者XSRF,是一種對網站的惡意利用。儘管聽起來像跨站指令碼(XSS),但它與XSS非常不同,並且攻擊方式幾乎相左。XSS利用站點內的信任使用者,而CSRF則通過偽裝來自受信任使用者的請求來利用受信任的網站。與XSS攻擊相比,CSRF攻擊往往不大流行(因此對其進行防範的資源也相當稀少)和難以防範,所以被認為比XSS更具危險性。

攻擊通過在授權使用者訪問的頁面中包含連結或者指令碼的 方式工作。例如:一個網站使用者Bob可能正在瀏覽聊天論壇,而同時另一個使用者Alice也在此論壇中,並且後者剛剛釋出了一個具有Bob銀行連結的圖片消 息。設想一下,Alice編寫了一個在Bob的銀行站點上進行取款的form提交的連結,並將此連結作為圖片tag。如果Bob的銀行在cookie中保 存他的授權資訊,並且此cookie沒有過期,那麼當Bob的瀏覽器嘗試裝載圖片時將提交這個取款form和他的cookie,這樣在沒經Bob同意的情況下便授權了這次事務。

CSRF是一種依賴web瀏覽器的、被混淆過的代理人攻擊(deputy attack)。在上面銀行示例中的代理人是Bob的web瀏覽器,它被混淆後誤將Bob的授權直接交給了Alice使用。

下面是CSRF的常見特性:

  • 依靠使用者標識危害網站
  • 利用網站對使用者標識的信任
  • 欺騙使用者的瀏覽器傳送HTTP請求給目標站點
  • 另外可以通過IMG標籤會觸發一個GET請求,可以利用它來實現CSRF攻擊。

風險在於那些通過基於受信任的輸入form和對特定行為無需授權的已認證的使用者來執行某些行為的web應用。已經通過被儲存在使用者瀏覽器中的cookie進行認證的使用者將在完全無知的情況下發送HTTP請求到那個信任他的站點,進而進行使用者不願做的行為。

使用圖片的CSRF攻擊常常出現在網路論壇中,因為那裡允許使用者釋出圖片而不能使用JavaScript。

 

}

 

目前可以接受的方案:登入時動態為每個會話生成token,記錄在伺服器的session中,然後之後其他訪問的頁面中將需要CSRF防護的請求中,在頁面ajax訪問伺服器前加入token值,這樣伺服器就可以校驗token和session的的token是否匹配,即可。