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 第一...