Django學習系列之CSRF

2022-07-23 06:36:12 字數 1302 閱讀 5039

什麼是csrf

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

django提供的csrf防護機制

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防護

定義urls.py

from django.conf.urls import

urlfrom django.contrib import

admin

views

urlpatterns =[

url(r

'^admin/

', admin.site.urls),

url(r

'^csrf/

', views.csrf),

]

定義views.py

定義csrf.html

"en

">"

button

" value="

ajax提交

" onclick="

doajax();

" /> #

ajax提交,csrf

Django學習手冊 csrf

csrf csrf原理 無csrf時存在隱患 form提交 ajax提交 預設為全域性都csrf form表單提交方式 div form action login method post p 使用者名稱 input type text name user p p 密碼 input type pass...

Django學習系列之django分頁

from django.core.paginator import paginator objects post.objects.filter status published 從資料庫中取出所有status published狀態的文章p paginator objects,3 例項化pagina...

Django系列學習之五

後台管理頁面做好了,接下來就要做公共訪問的頁面了。當我們剛剛在瀏覽器中輸入 之後,瀏覽器顯示出了後台管理的登入頁面,那有沒有同學想過這個伺服器是怎麼給我們找到這個頁面並返回呢?admin 是我們想要請求得頁面,伺服器在收到這個請求之後,就一定對應著乙個處理動作,這個處理動作就是幫我的產生頁面內容並返...