Django 的 CSRF 保護機制理解

2021-06-28 01:29:49 字數 694 閱讀 4466

用 django 有多久,我跟 csrf 這個概念打交道就有久了。

但是一直我都是知其然而不知其所以然,沒有把 csrf 的機制弄清楚。昨天稍微研究了一下,總結如下。

你的**會以為這個請求是使用者自己發來的,其實呢,這個請求是那個惡意**偽造的。

具體的細節及其危害見 wikipedia

django 第一次響應來自某個客戶端的請求時,會在伺服器端隨機生成乙個 token,把這個 token 放在 cookie 裡。然後每次 post 請求都會帶上這個 token,

這樣就能避免被 csrf 攻擊。

在返回的 http 響應的 cookie 裡,django 會為你新增乙個 csrftoken 字段,其值為乙個自動生成的 token

在所有的 post 表單時,必須包含乙個 csrfmiddlewaretoken 字段 (只需要在模板裡加乙個 tag, django 就會自動幫你生成,見下面)

在處理 post 請求之前,django 會驗證這個請求的 cookie 裡的 csrftoken 欄位的值和提交的表單裡的 csrfmiddlewaretoken 欄位的值是否一樣。如果一樣,則表明這是乙個合法的請求,否則,這個請求可能是來自於別人的 csrf 攻擊,返回 403 forbidden.

在所有 ajax post 請求裡,新增乙個 x-csrftoken header,其值為 cookie 裡的 csrftoken 的值

Django 提供的 CSRF 防護機制

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

django中csrf的實現機制

1 啟用中介軟體 2 post請求 3 驗證碼 4 表單中新增標籤 django 原生支援乙個簡單易用的跨站請求偽造的防護。當提交乙個啟用csrf 防護的post 表單時,你必須使用上面例子中的csrf token 模板標籤。第一步 django第一次響應來自某個客戶端的請求時,後端隨機產生乙個to...

Flask WTF中的csrf保護

這部分文件介紹了 csrf 保護。例如,由 ajax 傳送的 post 請求,然而它背後並沒有表單。在 flask wtf 0.9.0 以前的版本你無法獲得 csrf 令牌。這是為什麼我們要實現 csrf。為了能夠讓所有的檢視函式受到 csrf 保護,你需要開啟csrfprotect模組 from ...