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实现向ppt文件里插入新幻灯片页面的方法
Apr 28 Python
Python的Django框架中settings文件的部署建议
May 30 Python
通过Python使用saltstack生成服务器资产清单
Mar 01 Python
python中zip()方法应用实例分析
Apr 16 Python
Python 实现引用其他.py文件中的类和类的方法
Apr 29 Python
python保存二维数组到txt文件中的方法
Nov 15 Python
python爬虫神器Pyppeteer入门及使用
Jul 13 Python
python tornado使用流生成图片的例子
Nov 18 Python
python 爬取古诗文存入mysql数据库的方法
Jan 08 Python
python实现密码强度校验
Mar 18 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
Apr 27 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
May 22 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模板引擎SMARTY
2006/10/09 PHP
ThinkPHP验证码使用简明教程
2014/03/05 PHP
php获取用户浏览器版本的方法
2015/01/03 PHP
Thinkphp框架开发移动端接口(2)
2016/08/18 PHP
用ASP将SQL搜索出来的内容导出为TXT的代码
2007/07/27 Javascript
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
Javascript 类与静态类的实现(续)
2010/04/02 Javascript
jquery.qrcode在线生成二维码使用示例
2013/08/21 Javascript
JS实现日期加减的方法
2013/11/29 Javascript
优化javascript的执行效率一些方法总结
2013/12/25 Javascript
jQuery/CSS3图片特效插件整理推荐
2014/12/07 Javascript
jQuery图片特效插件Revealing实现拉伸放大
2015/04/22 Javascript
Jsonp 关键字详解及json和jsonp的区别,ajax和jsonp的区别
2015/12/30 Javascript
jQuery 实现ajax传入参数含有特殊字符的方法总结
2016/10/17 Javascript
详解angular用$sce服务来过滤HTML标签
2017/04/11 Javascript
angular4中关于表单的校验示例
2017/10/16 Javascript
ES6中数组array新增方法实例总结
2017/11/07 Javascript
layui实现三级联动效果
2019/07/26 Javascript
js实现的在本地预览图片功能示例
2019/11/09 Javascript
[45:59]EG vs OG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python读大数据txt
2016/03/28 Python
python生成圆形图片的方法
2020/03/25 Python
解决nohup执行python程序log文件写入不及时的问题
2019/01/14 Python
keras获得某一层或者某层权重的输出实例
2020/01/24 Python
Selenium自动化测试工具使用方法汇总
2020/06/12 Python
CSS3制作彩色进度条样式的代码示例分享
2016/06/23 HTML / CSS
JBL澳大利亚官方商店:扬声器、耳机和音响系统
2018/05/24 全球购物
英国领先的在线高尔夫设备零售商:Golfgeardirect
2020/12/11 全球购物
介绍一下write命令
2012/09/24 面试题
2014年小学重阳节活动策划方案
2014/09/16 职场文书
党员自我剖析材料范文
2014/10/06 职场文书
校园会短篇的广播稿
2014/10/21 职场文书
还款承诺书范本
2015/01/20 职场文书
2016年优秀少先队辅导员事迹材料
2016/02/26 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android