CSRF的原理和防範措施

a)攻擊原理:

i.用戶C訪問正常網站A時進行登陸,瀏覽器保存A的cookie
ii.用戶C再訪問攻擊網站B,網站B上有某個隱藏的連接或者圖片標籤會自動請求網站A的URL地址,例如表單提交,傳指定的參數
iii.而攻擊網站B在訪問網站A的時候,瀏覽器會自動帶上網站A的cookie
iv.因此網站A在接收到請求以後可判斷當前用戶是登陸狀態,因此根據用戶的權限作具體的操做邏輯,形成僞形成功

b)防範措施:

i.在指定表單或者請求頭的裏面添加一個隨機值作爲參數
ii.在響應的cookie裏面也設置該隨機值
iii.那麼用戶C在正常提交表單的時候會默認帶上表單中的隨機值,瀏覽器會自動帶上cookie裏面的隨機值,那麼服務器下次接受到請求以後就能夠取出兩個值進行校驗
iv.而對於網站B來講網站B在提交表單的時候不知道該隨機值是什麼,因此就造成不了攻擊

個人理解:搞清楚三個點 

一、什麼是csrf?(cross-site request forgery)簡稱跨站請求僞造,首先要搞明白它是一種行爲,什麼行爲?
僞造你的請求的行爲。

簡單來講就是: 你訪問了信任網站A,而後A會用保存你的我的信息並返回給你的瀏覽器一個cookie,而後呢,在cookie的過時時間以內,你去訪問了惡意網站B,它給你返回一些惡意請求代碼,要求你去訪問網站A,而你的瀏覽器在收到這個惡意請求以後,在你不知情的狀況下,會帶上保存在本地瀏覽器的cookie信息去訪問網站A,而後網站A誤覺得是用戶自己的操做,致使來自惡意網站C的攻擊代碼會被執行:發郵件,發消息,修改你的密碼,購物,轉帳,偷窺你的我的信息,致使私人信息泄漏和帳戶財產安全受到威脅。

二、如何解決?在post請求時,form表單或ajax裏添加csrf_token(實際項目代碼裏就是如此簡單)
解決原理:添加csrf_token值後,web框架會在響應中自動幫咱們生成cookie信息,返回給瀏覽器,同時在前端代碼會生成一個csrf_token值,而後當你post提交信息時,web框架會自動比對cookie裏和前端form表單或ajax提交上來的csrf_token值,二者一致,說明是當前瀏覽器發起的正常請求並處理業務邏輯返回響應,那麼第三方網站拿到你的cookie值爲何不能經過驗證呢,由於他沒你前端的那個隨機生成的token值啊,他總不能跑到你電腦面前查看你的瀏覽器前端頁面自動隨機生成的token值吧。
注意:你打開瀏覽器訪問某個url(頁面),默認是get請求,也就是說,你只要訪問了url,對應的視圖函數裏只要不是if xx == post的邏輯就會執行,因此你打開頁面,他會先生成cookie(token)值,返回給瀏覽器,而後你提交表單,或者發ajax請求時,會將瀏覽器的cookie信息(token值)發送給服務器進行token比對,這個過程相對於你發起了兩次請求,第一次是get,第二次纔是post,搞清楚這個,你才能明白csrf_token是怎麼比對的。
相關文章
相關標籤/搜索