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默認啟用了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="確認修改"> </form> </body> </html>
django防止csrf攻擊的方式:
1) 默認打開csrf中間件。
2) 表單post提交數(shù)據(jù)時加上{% csrf_token %}
標簽。
防御原理:
- 渲染模板文件時在頁面生成一個名字叫做csrfmiddlewaretoken的隱藏域。
- 服務(wù)器交給瀏覽器保存一個名字為csrftoken的cookie信息。
- 提交表單時,兩個值都會發(fā)給服務(wù)器,服務(wù)器進行比對,如果一樣,則csrf驗證通過,否則失敗。
希望本文所述對大家基于Django框架的Python程序設(shè)計有所幫助。
相關(guān)文章
python 獲取一個值在某個區(qū)間的指定倍數(shù)的值方法
今天小編就為大家分享一篇python 獲取一個值在某個區(qū)間的指定倍數(shù)的值方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11python:pandas合并csv文件的方法(圖書數(shù)據(jù)集成)
下面小編就為大家分享一篇python:pandas合并csv文件的方法(圖書數(shù)據(jù)集成),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04python新一代網(wǎng)絡(luò)請求庫之python-httpx庫操作指南
Python 的 httpx 包是一個用于 HTTP 交互的一個優(yōu)秀且靈活的模塊,下面這篇文章主要給大家介紹了關(guān)于python新一代網(wǎng)絡(luò)請求庫之python-httpx庫的相關(guān)資料,需要的朋友可以參考下2022-09-09keras實現(xiàn)多種分類網(wǎng)絡(luò)的方式
這篇文章主要介紹了keras實現(xiàn)多種分類網(wǎng)絡(luò)的方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06Python如何使用argparse模塊處理命令行參數(shù)
這篇文章主要介紹了Python如何使用argparse模塊處理命令行參數(shù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-12-12