csrf驗證機制
阿新 • • 發佈:2018-11-07
CSRF(跨站請求偽造)
- CSRF 英文全稱為 Cross SIte Request Forgery
- CSRF 通常指惡意攻擊者盜用使用者的名義,傳送惡意請求,嚴重洩露個人資訊危害財產的安全
CSRF攻擊示意圖
解決CSRF攻擊
使用csrf_token校驗
1.客戶端和瀏覽器向後端傳送請求時,後端往往會在響應中的 cookie 設定 csrf_token 的值,可以使用請求鉤子實現,在cookie中設定csrf_token
2.flask_wtf 中為我們提供了CSRF保護,可以直接呼叫開啟對app的保護
一旦開啟CSRF保護,就要設定祕鑰:SECRET_KEY
csrf驗證
1.表單提交方式
- .伺服器通過請求鉤子在cookie中設定了csrf_token,實際上是在session中儲存了未加密的csrf_token,並且將生成的sessionID編號儲存在cookie中
- 在表單中我們添加了csrf的隱藏欄位,在瀏覽器再次訪問伺服器時:
1.獲取到表單中的csrf_token(加密的),使用secret_key進行解密,得到解密後的csrf_token
2.通過cookie中的sessionID,取到伺服器內部儲存的session中的csrf_token(未加密的)
3.將兩者的值進行比較
2.ajax提交請求方式
- 在js裡面,獲取到cookie中的csrf_token,將其新增到ajax的請求頭中
驗證過程:
1.獲取請求頭中的csrf_token(加密的),然後使用secret_key解密,得到解密後csrf_token。
2.通過cookie中的sessionID,取到伺服器內部儲存的session中的csrf_token(未加密的)。
3.將兩者的值進行比較