1. 程式人生 > >csrf驗證機制

csrf驗證機制

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.將兩者的值進行比較