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 相关文章推荐
在SAE上部署Python的Django框架的一些问题汇总
May 30 Python
Python中property属性实例解析
Feb 10 Python
python3 遍历删除特定后缀名文件的方法
Apr 23 Python
Python实现快速傅里叶变换的方法(FFT)
Jul 21 Python
基于python的Paxos算法实现
Jul 03 Python
Python 控制终端输出文字的实例
Jul 12 Python
scikit-learn线性回归,多元回归,多项式回归的实现
Aug 29 Python
python飞机大战 pygame游戏创建快速入门详解
Dec 17 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
Feb 03 Python
使用pygame编写Flappy bird小游戏
Mar 14 Python
python操作链表的示例代码
Sep 27 Python
win10+anaconda安装yolov5的方法及问题解决方案
Apr 29 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采集速度探究总结(原创)
2008/04/18 PHP
php使用cookie保存登录用户名的方法
2015/01/26 PHP
php通过文件流方式复制文件的方法
2015/03/13 PHP
JS支持带x身份证号码验证函数
2008/08/10 Javascript
常用简易JavaScript函数
2009/04/09 Javascript
JavaScript 事件查询综合
2009/07/13 Javascript
javascript 判断数组是否已包含了某个元素的函数
2010/05/30 Javascript
利用js实现选项卡的特别效果的实例
2013/03/03 Javascript
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
表格奇偶行设置不同颜色的核心JS代码
2013/12/24 Javascript
使用javascript控制cookie显示和隐藏背景图
2014/02/12 Javascript
js左右弹性滚动对联广告代码分享
2014/02/19 Javascript
JavaScript表单通过正则表达式验证电话号码
2014/03/14 Javascript
JS中获取函数调用链所有参数的方法
2015/05/07 Javascript
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
2015/09/14 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
2016/07/12 Javascript
jQuery实现导航回弹效果
2017/02/27 Javascript
Angularjs中ng-repeat的简单实例
2017/08/25 Javascript
vue裁切预览组件功能的实现步骤
2018/05/04 Javascript
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
2019/05/14 Javascript
JS实现的雪花飘落特效示例
2019/12/03 Javascript
一行JavaScript代码如何实现瀑布流布局
2020/12/11 Javascript
python二叉树的实现实例
2013/11/21 Python
Python ORM框架SQLAlchemy学习笔记之关系映射实例
2014/06/10 Python
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
python/Matplotlib绘制复变函数图像教程
2019/11/21 Python
Python查找不限层级Json数据中某个key或者value的路径方式
2020/02/27 Python
基于python实现MQTT发布订阅过程原理解析
2020/07/27 Python
python实现简单的学生管理系统
2021/02/22 Python
可爱的童装和鞋子:Fabkids
2019/08/16 全球购物
yy生日主持词
2014/03/20 职场文书
高中学生评语大全
2014/04/25 职场文书
男方婚前保证书
2015/02/28 职场文书
超市员工辞职信范文
2015/05/12 职场文书
会计做账心得体会
2016/01/22 职场文书
实战 快速定位MySQL的慢SQL
2022/03/22 MySQL