Django 提供的 CSRF 防護機制

2021-09-10 09:18:16 字數 694 閱讀 7144

用 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 的值

Spring REST 配置CSRF防護

內容從以下幾個方面展開 1.什麼是csrf csrf 攻擊簡單來說,是多tab頁面瀏覽器的乙個安全漏洞,比如你正在訪問a 此時如果瀏覽器有你的cookie,並且session沒有過期,此時你去訪問b 那麼b 可以直接呼叫a 的介面,而a 則認為是你本人進行的操作。以下是圖示 2.如何進行防禦 對cs...

CSRF 攻擊原理及防護

csrf 的英文全稱是 cross site request forgery 縮寫也稱 xscf,也被稱之為 one click attack 或者 session riding csrf 和 xss 非常的像,但是它們是有很大的區別的,並且攻擊方式也不一樣 xss 是利用站點內的信任使用者,而 c...

Django專案 csrf攻擊

1 django中預設開啟csrf中介軟體。settings.py檔案中 middleware classes django.contrib.sessions.middleware.sessionmiddleware django.middleware.common.commonmiddleware...