web安全--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。
 

一、CSRF***原理:

web安全--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,無法區分是不是用戶正常的訪問,所以會欺騙服務器,造
成傷害

 

二、CSRF***防禦

CSRF***防禦的重點是利用cookie的值只能被第一方讀取,無法讀取第三方的cookie值。

防禦方法:
預防csrf***簡單可行的方法就是在客戶端網頁上再次添加一個cookie,保存一個隨機數,而用戶訪問的時候,先讀
取這個cookie的值,hash一下這個cookie值併發送給服務器,服務器接收到用戶的hash之後的值,同時取出之前設
置在用戶端的cookie的值,用同樣的算法hash這個cookie值,比較這兩個hash值,相同則是合法。(如果用戶訪問
了病毒網站,也想帶這個cookie去訪問的時候,此時,因爲病毒網站無法獲取第三方cookie的值,所以他也就無法
hash這個隨機數,所以也就會被服務器校驗的過濾掉)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章