csrf的防御方法


一、csrf是什么

CSRF(Cross-site request forgery),中文名稱:跨站請求偽造

CSRF攻擊:攻擊者盜用了你的身份,以你的名義發送惡意請求。CSRF能夠做的事情包括:以你名義發送郵件,發消息,盜取你的賬號,甚至於購買商品,虛擬貨幣轉賬......造成的問題包括:個人隱私泄露以及財產安全。

二、csrf防御

CSRF防范方法:

(1)refer頭

Referer標識當前請求的來源頁面,瀏覽器訪問時除了自動帶上Cookie還會自動帶上Referer,所以服務端可以檢測Referer頭是否本網站頁面來決定是否響應請求。

Referer是瀏覽器自動帶上的,基於認為瀏覽器沒有相關漏洞的前提下,我們可以認為攻擊者是沒法偽造Referer頭的,也就是檢測Referer頭的方法是可靠的。

但該方式有時會不受認可,一是因為瀏覽器是可以設置禁止發送Referer頭的,如果使用該方式那么禁止Referer頭的瀏覽將無法正常使用,這可能會降低用戶使用體驗。二是因為由於移動端的崛起當下流行前后端分離app和web共用一套后端代碼,但app是不會自動帶Referer頭的,如果使用該方式app端不好處理。

(2)隨機token值

oken 可以在用戶登陸后產生並放於 session 之中,然后在每次請求時把 token 從 session 中拿出,與請求中的 token 進行比對,但這種方法的難點在於如何把 token 以參數的形式加入請求。對於 GET 請求,token 將附在請求地址之后,這樣 URL 就變成 http://url?csrftoken=tokenvalue。 而對於 POST 請求來說,要在 form 的最后加上 <input type=”hidden” name=”csrftoken” value=”tokenvalue”/>,這樣就把 token 以參數的形式加入請求了。

個Token是指的用戶登錄的憑據,並用以維持登錄狀態的話,也就是說一個用戶必須要輸入用戶名密碼並驗證通過后,服務器才會分配一個Token,傳回並儲存在客戶端作為憑證(同時儲存在服務器上)。因此並不是每個人都可以獲得這個Token,只有能提供正確用戶密碼的客戶端才可以。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM