详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击


Posted in Python onOctober 09, 2018

一、在django后台处理

1、将django的setting中的加入django.contrib.messages.middleware.MessageMiddleware,一般新建的django项目中会自带的。

MIDDLEWARE_CLASSES = [
  'django.middleware.security.SecurityMiddleware',
  'django.contrib.sessions.middleware.SessionMiddleware',
  'django.middleware.common.CommonMiddleware',
  'django.middleware.csrf.CsrfViewMiddleware',
  'django.contrib.auth.middleware.AuthenticationMiddleware',
  'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
  'django.contrib.messages.middleware.MessageMiddleware', 
]

2、在templete的html页的from中添加{% csrf %},后台重定向语法如下:

return render_to_response(xxx.html', context_instance=RequestContext(request))

二、前端处理

对所有的ajax请求加上以下语句:

$(function () {
  $.ajaxSetup({
    data: {csrfmiddlewaretoken: '{{ csrf_token }}'},
  });
})

这样向后台的请求都会带django生成的那个csrf_token值。中间件csrf模块会截取判断csrf_token值是否一致,如果一致则请求合法。

三、对于ajax的复杂对象,例如[{"id":"001","name":"小明"},{"id":"002","name":"小军"}].,后台post的处理

必须将这种对象转化为json格式传到后台,后台在反序列化即可。(不要用ajax的其他序列化格式,其深度序列化后,django后台解析比较困难)

contentType不需要指定utf-8,否则post解析出错

四、csrf攻击与预防

csrf利用session和cookie的时效性进行攻击。他会获取请求的cookie,在session时效内进行请求。因此对于重要信息,重要功能进行单次请求处理。即请求一次失效。

例如:请求头中加入验证token信息,用完即失效。django的中间件csrf_token就是此原理防止的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python文件操作整理汇总
Oct 21 Python
Python有序字典简单实现方法示例
Sep 28 Python
python编程使用selenium模拟登陆淘宝实例代码
Jan 25 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
May 29 Python
Flask框架Flask-Principal基本用法实例分析
Jul 23 Python
python 3.6.5 安装配置方法图文教程
Sep 18 Python
在Python中获取操作系统的进程信息
Aug 27 Python
Python 用turtle实现用正方形画圆的例子
Nov 21 Python
python调用函数、类和文件操作简单实例总结
Nov 29 Python
为什么python比较流行
Jun 19 Python
python的变量和简单数字类型详解
Sep 15 Python
Python制作春联的示例代码
Jan 22 Python
详解如何将python3.6软件的py文件打包成exe程序
Oct 09 #Python
让代码变得更易维护的7个Python库
Oct 09 #Python
windows下cx_Freeze生成Python可执行程序的详细步骤
Oct 09 #Python
Python打包方法Pyinstaller的使用
Oct 09 #Python
Python如何发布程序的详细教程
Oct 09 #Python
python如何发布自已pip项目的方法步骤
Oct 09 #Python
Django csrf 验证问题的实现
Oct 09 #Python
You might like
兼容性最强的PHP生成缩略图的函数代码(修改版)
2011/01/18 PHP
php查询mysql数据库并将结果保存到数组的方法
2015/03/18 PHP
PHP实现的AES加密、解密封装类与用法示例
2018/08/02 PHP
thinkphp5使用无限极分类
2019/02/18 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
2019/10/01 PHP
基于mootools 1.3框架下的图片滑动效果代码
2011/04/22 Javascript
javascript获取元素偏移量的方法有哪些
2014/06/24 Javascript
jQuery.holdReady()方法用法实例
2014/12/27 Javascript
JavaScript字符串删除重复字符的方法
2015/12/25 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
JS常用字符串方法(推荐)
2021/01/15 Javascript
js显示动态时间的方法详解
2016/08/20 Javascript
Angular JS数据的双向绑定详解及实例
2016/12/31 Javascript
完美解决mui框架off-canvas侧滑超出部分隐藏无法滚动的问题
2018/01/25 Javascript
尝试使用Python多线程抓取代理服务器IP地址的示例
2015/11/09 Python
Python爬虫之模拟知乎登录的方法教程
2017/05/25 Python
简单实现python数独游戏
2018/03/30 Python
Django 配置多站点多域名的实现步骤
2019/05/17 Python
Python 中Django安装和使用教程详解
2019/07/03 Python
Django ORM 查询管理器源码解析
2019/08/05 Python
Python中的单下划线和双下划线使用场景详解
2019/09/09 Python
解决更改AUTH_USER_MODEL后出现的问题
2020/05/14 Python
利用Vscode进行Python开发环境配置的步骤
2020/06/22 Python
Python通过format函数格式化显示值
2020/10/17 Python
html5+css如何实现中间大两头小的轮播效果
2018/12/06 HTML / CSS
资深地理教师自我评价
2013/09/21 职场文书
电子商务个人职业生涯规划范文
2014/02/12 职场文书
新春寄语大全
2014/04/09 职场文书
学校欢迎标语
2014/06/18 职场文书
建筑工程造价专业自荐信
2014/07/08 职场文书
离婚协议书范本(2014版)
2014/09/28 职场文书
审计局2014法制宣传日活动总结
2014/11/01 职场文书
先进个人推荐材料
2014/12/29 职场文书
外贸英文求职信范文
2015/03/19 职场文书
留学推荐信中文范文
2015/03/26 职场文书