Python Django框架防御CSRF攻击的方法分析


Posted in Python onOctober 18, 2019

本文实例讲述了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/应用名/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提交数据时加上{% csrf_token %}标签。

防御原理:

  1. 渲染模板文件时在页面生成一个名字叫做csrfmiddlewaretoken的隐藏域。
  2. 服务器交给浏览器保存一个名字为csrftoken的cookie信息。
  3. 提交表单时,两个值都会发给服务器,服务器进行比对,如果一样,则csrf验证通过,否则失败。

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

Python 相关文章推荐
Python3实现连接SQLite数据库的方法
Aug 23 Python
Python入门篇之条件、循环
Oct 17 Python
python生成验证码图片代码分享
Jan 28 Python
Python实现的质因式分解算法示例
May 03 Python
python实现抖音视频批量下载
Jun 20 Python
对python中两种列表元素去重函数性能的比较方法
Jun 29 Python
python爬虫自动创建文件夹的功能
Aug 01 Python
python实现写数字文件名的递增保存文件方法
Oct 25 Python
centos7之Python3.74安装教程
Aug 15 Python
Python Tornado之跨域请求与Options请求方式
Mar 28 Python
协程Python 中实现多任务耗资源最小的方式
Oct 19 Python
python+requests实现接口测试的完整步骤
Oct 27 Python
python使用matplotlib绘制雷达图
Oct 18 #Python
Python 日志logging模块用法简单示例
Oct 18 #Python
python调用matplotlib模块绘制柱状图
Oct 18 #Python
Python Django模板之模板过滤器与自定义模板过滤器示例
Oct 18 #Python
树莓派4B+opencv4+python 打开摄像头的实现方法
Oct 18 #Python
python使用Matplotlib改变坐标轴的默认位置
Oct 18 #Python
python调用Matplotlib绘制分布点图
Oct 18 #Python
You might like
通过对php一些服务器端特性的配置加强php的安全
2006/10/09 PHP
php写的简易聊天室代码
2011/06/04 PHP
php中通过curl检测页面是否被百度收录
2013/09/27 PHP
游戏人文件夹程序 ver 3.0
2006/07/14 Javascript
jquery 图片截取工具jquery.imagecropper.js
2010/04/09 Javascript
js对图片base64编码字符串进行解码并输出图像示例
2014/03/17 Javascript
教你用AngularJS框架一行JS代码实现控件验证效果
2014/06/23 Javascript
js实现基于正则表达式的轻量提示插件
2015/08/29 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
2016/05/25 Javascript
基于JavaScript实现自定义滚动条
2017/01/25 Javascript
zTree实现节点修改的实时刷新功能
2017/03/20 Javascript
JS实现电商放大镜效果
2017/08/24 Javascript
在vue项目中引用Iview的方法
2018/09/14 Javascript
Vue Element UI + OSS实现上传文件功能
2019/07/31 Javascript
javascrpt密码强度校验函数详解
2020/03/18 Javascript
vue.js+element 默认提示中英文操作
2020/11/11 Javascript
python实现简易通讯录修改版
2018/03/13 Python
从django的中间件直接返回请求的方法
2018/05/30 Python
python 多线程将大文件分开下载后在合并的实例
2018/11/09 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
2018/12/18 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
python3中calendar返回某一时间点实例讲解
2020/11/18 Python
HTML5 canvas画图并保存成图片的jcanvas插件
2014/01/17 HTML / CSS
汤米巴哈马官方网站:Tommy Bahama
2017/05/13 全球购物
美国最大的网络男装服装品牌:Bonobos
2017/05/25 全球购物
外贸英语毕业生自荐信
2013/11/14 职场文书
教师产假请假条范文
2014/04/10 职场文书
五分钟演讲稿
2014/04/30 职场文书
优秀护士事迹材料
2014/12/25 职场文书
保研专家推荐信范文
2015/03/25 职场文书
酒店采购员岗位职责
2015/04/03 职场文书
消防演习通知
2015/04/25 职场文书
罗马假日观后感
2015/06/08 职场文书
合理化建议书范文
2015/09/14 职场文书
vue数据字典取键值项目的字典问题
2022/04/12 Vue.js
win10电脑关机快捷键是哪个 win10快速关机的几种方法
2022/08/14 数码科技