Python Django框架防御CSRF攻擊的方法分析
本文實例講述了Python Django框架防御CSRF攻擊的方法。分享給大家供大家參考,具體如下:
項目名/settings.py(項目配置,csrf中間件配置):
MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', # django默認(rèn)啟用了csrf防護,只針對post表單提交進行防護。 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', )
templates/應(yīng)用名/demo.html(模板文件,csrf防護):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>修改密碼頁面</title>
</head>
<body>
<form method="post" action="/change_pwd_action">
{% csrf_token %} {# csrf_token是Django提供的,用于csrf防護。該變量會替換成一個表單隱藏域。 #}
新密碼:<input type="password" name="pwd">
<input type="submit" value="確認(rèn)修改">
</form>
</body>
</html>
django防止csrf攻擊的方式:
1) 默認(rèn)打開csrf中間件。
2) 表單post提交數(shù)據(jù)時加上{% csrf_token %}標(biāo)簽。
防御原理:
- 渲染模板文件時在頁面生成一個名字叫做csrfmiddlewaretoken的隱藏域。
- 服務(wù)器交給瀏覽器保存一個名字為csrftoken的cookie信息。
- 提交表單時,兩個值都會發(fā)給服務(wù)器,服務(wù)器進行比對,如果一樣,則csrf驗證通過,否則失敗。
希望本文所述對大家基于Django框架的Python程序設(shè)計有所幫助。
相關(guān)文章
使用Python和XML實現(xiàn)文件復(fù)制工具的完整代碼
在本篇博客中,我們將學(xué)習(xí)如何使用 wxPython 構(gòu)建一個簡單的文件復(fù)制工具,并將文件路徑和目標(biāo)目錄的配置信息保存到 XML 文件中,通過這種方式,我們可以在下次運行程序時輕松加載之前保存的配置,需要的朋友可以參考下2024-08-08
pandas.concat實現(xiàn)DataFrame豎著拼接、橫著拼接方式
這篇文章主要介紹了pandas.concat實現(xiàn)DataFrame豎著拼接、橫著拼接方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10
python?包中的sched?事件調(diào)度器的操作方法
sched模塊內(nèi)容很簡單,只定義了一個類。它用來最為一個通用的事件調(diào)度模塊,接下來通過本文給大家介紹python?包之?sched?事件調(diào)度器教程,需要的朋友可以參考下2022-04-04

