csrf驗證機制

2021-10-02 07:20:27 字數 850 閱讀 2199

csrf(跨站請求偽造)

csrf 英文全稱為 cross site request forgery

csrf 通常指惡意攻擊者盜用使用者的名義,傳送惡意請求,嚴重洩露個人資訊危害財產的安全

csrf攻擊示意圖

解決csrf攻擊

使用csrf_token校驗

1.客戶端和瀏覽器向後端傳送請求時,後端往往會在響應中的 cookie 設定 csrf_token 的值,可以使用請求鉤子實現,在cookie中設定csrf_token

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

CSRF校驗機制

表單提交 需要做的事情 1.在cookie中設定csrf token 沒有 而是sessionid 鑰匙,裡面session空間中儲存的是未加密的csrf token 伺服器完成 2.在表單中設定隱藏的csrf token 手動設定 校驗流程 1.通過sessionid取出伺服器內部未加密的csrf...

Django 的 CSRF 保護機制理解

用 django 有多久,我跟 csrf 這個概念打交道就有久了。但是一直我都是知其然而不知其所以然,沒有把 csrf 的機制弄清楚。昨天稍微研究了一下,總結如下。你的 會以為這個請求是使用者自己發來的,其實呢,這個請求是那個惡意 偽造的。具體的細節及其危害見 wikipedia django 第一...

Django 提供的 CSRF 防護機制

用 django 有多久,我跟 csrf 這個概念打交道就有久了。但是一直我都是知其然而不知其所以然,沒有把 csrf 的機制弄清楚。昨天稍微研究了一下,總結如下。你的 會以為這個請求是使用者自己發來的,其實呢,這個請求是那個惡意 偽造的。具體的細節及其危害見 wikipedia django 第一...