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 相关文章推荐
深入理解Python中的元类(metaclass)
Feb 14 Python
Python中random模块用法实例分析
May 19 Python
python3安装pip3(install pip3 for python 3.x)
Apr 03 Python
Pycharm设置utf-8自动显示方法
Jan 17 Python
Pandas读取并修改excel的示例代码
Feb 17 Python
python画图把时间作为横坐标的方法
Jul 07 Python
在python中将list分段并保存为array类型的方法
Jul 15 Python
python mqtt 客户端的实现代码实例
Sep 25 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
Jan 10 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
Jul 07 Python
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
Apr 05 Python
Matplotlib绘制混淆矩阵的实现
May 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下载CSS文件中的图片的代码
2013/09/24 PHP
php中ob函数缓冲机制深入理解
2015/08/03 PHP
php中二维数组排序问题方法详解
2015/08/28 PHP
php实现表单提交上传文件功能
2018/05/28 PHP
javascript 对象定义方法 简单易学
2009/03/22 Javascript
juqery 学习之六 CSS--css、位置、宽高
2011/02/11 Javascript
JavaScript回调(callback)函数概念自我理解及示例
2013/07/04 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
2014/04/30 Javascript
Flash图片上传组件 swfupload使用指南
2015/03/14 Javascript
jquery实现移动端点击图片查看大图特效
2020/09/11 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
2016/05/29 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
2016/12/09 Javascript
本地Bootstrap文件字体图标引入却无法显示问题的解决方法
2020/04/18 Javascript
AngularJS双向绑定和依赖反转实例详解
2017/04/15 Javascript
AngularJS读取JSON及XML文件的方法示例
2017/05/25 Javascript
JavaScript之面向对象_动力节点Java学院整理
2017/06/29 Javascript
AngularJS实现controller控制器间共享数据的方法示例
2017/10/30 Javascript
Laravel admin实现消息提醒、播放音频功能
2019/07/10 Javascript
Python heapq使用详解及实例代码
2017/01/25 Python
Python算法应用实战之队列详解
2017/02/04 Python
django模型层(model)进行建表、查询与删除的基础教程
2017/11/21 Python
TensorFlow中权重的随机初始化的方法
2018/02/11 Python
python3 爬取图片的实例代码
2018/11/06 Python
python使用Pandas库提升项目的运行速度过程详解
2019/07/12 Python
python爬虫神器Pyppeteer入门及使用
2019/07/13 Python
Python3 使用pillow库生成随机验证码
2019/08/26 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
2019/10/30 Python
西安当代医院管理研究院笔试题
2015/12/11 面试题
销售员岗位职责
2014/06/09 职场文书
银行金融服务方案
2014/06/11 职场文书
党员示范岗材料
2014/12/19 职场文书
公司优秀员工推荐信
2015/03/24 职场文书
2015年街道办事处工作总结
2015/05/22 职场文书
杨善洲观后感
2015/06/04 职场文书
2016大学生社会实践心得体会范文
2016/01/14 职场文书
golang 实用库gotable的具体使用
2021/07/01 Golang