CSRF攻擊與防護

 

前言:
先了解第一方和第三方cookie概念
Cookie是一個域服務器存儲在瀏覽器中的一小段數據塊,只能被這個域訪問,誰設置則誰訪問。
第一方Cookie:好比,訪問www.a.com這個網站,這個網站設置了一個Cookie,這個Cookie也只能被www.a.com這個域下的網頁讀取。
第三方Cookie:好比,訪問www.a.com這個網站,網頁裏有用到www.b.com網站的一張圖片,瀏覽器在www.b.com請求圖片的時候,www.b.com設置了一個Cookie,那這個Cookie只能被www.b.com這個域訪問,反而不能被www.a.com這個域訪問,由於對咱們來講,咱們實際是在訪問www.a.com這個網站被設置了一個www.b.com這個域下的Cookie,因此叫第三方Cookie。
 
1、CSRF攻擊原理:
1.用戶C打開瀏覽器,訪問受信任網站A,輸入用戶名和密碼請求登陸網站A;
2.在用戶信息經過驗證後,網站A產生Cookie信息並返回給瀏覽器,此時用戶登陸網站A成功,能夠正常發送請求到網站A;
3.用戶未退出網站A以前,在同一瀏覽器中,打開一個TAB頁訪問網站B;
4.網站B接收到用戶請求後,返回一些攻擊性代碼,併發出一個請求要求訪問第三方站點A;
5.瀏覽器在接收到這些攻擊性代碼後,根據網站B的請求,在用戶不知情的狀況下攜帶Cookie信息,向網站A發出請求。網站A並不知道該請求實際上是由B發起的,因此會根據用戶C的Cookie信息以C的權限處理該請求,致使來自網站B的惡意代碼被執行。
 
簡而言之: 經過訪問惡意網址,惡意網址返回來js自動執行訪問你以前登錄的網址,由於你已經登陸了,因此再次訪問將會攜帶cookie,由於服務器只認有沒有cookie,沒法區分是否是用戶正常的訪問,因此會欺騙服務器,形成傷害
 
2、CSRF攻擊防護
CSRF攻擊防護的重點是利用cookie的值只能被第一方讀取,沒法讀取第三方的cookie值。
防護方法:
預防csrf攻擊簡單可行的方法就是在客戶端網頁上再次添加一個cookie,保存一個隨機數,而用戶訪問的時候,先讀取這個cookie的值,hash一下這個cookie值併發送給服務器,服務器接收到用戶的hash以後的值,同時取出以前設置在用戶端的cookie的值,用一樣的算法hash這個cookie值,比較這兩個hash值,相同則是合法。(若是用戶訪問了病毒網站,也想帶這個cookie去訪問的時候,此時,由於病毒網站沒法獲取第三方cookie的值,因此他也就沒法hash這個隨機數,因此也就會被服務器校驗的過濾掉)
相關文章
相關標籤/搜索