详解利用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 ZipFile模块详解
Nov 01 Python
Python编程中的反模式实例分析
Dec 08 Python
python使用calendar输出指定年份全年日历的方法
Apr 04 Python
在CentOS6上安装Python2.7的解决方法
Jan 09 Python
python计算日期之间的放假日期
Jun 05 Python
CentOS下Python3的安装及创建虚拟环境的方法
Nov 28 Python
详解opencv Python特征检测及K-最近邻匹配
Jan 21 Python
Python判断字符串是否xx开始或结尾的示例
Aug 08 Python
python 数据分析实现长宽格式的转换
May 18 Python
Python openpyxl模块实现excel读写操作
Jun 30 Python
python 第三方库paramiko的常用方式
Feb 20 Python
如何使用flask将模型部署为服务
May 13 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
JAVA/JSP学习系列之四
2006/10/09 PHP
cmd下运行php脚本
2008/11/25 PHP
PHP答题类应用接口实例
2015/02/09 PHP
通过修改配置真正解决php文件上传大小限制问题(nginx+php)
2015/09/23 PHP
THINKPHP-Apache服务器中使用Alias虚拟目录URL重写 隐藏index.php
2021/03/09 PHP
javascript实现上传图片前的预览(TX的面试题)
2007/08/20 Javascript
Javascript 兼容firefox的一些问题
2009/05/21 Javascript
JavaScript中获取未知对象属性的代码
2011/04/27 Javascript
点击标签切换和自动切换DIV选项卡
2014/08/10 Javascript
jQuery实现跨域
2015/02/03 Javascript
JavaScript仿支付宝密码输入框
2015/12/29 Javascript
基于angular实现三级联动的生日插件
2017/05/12 Javascript
jQuery Layer弹出层传值到父页面的实现代码
2017/08/17 jQuery
javascript回调函数详解
2018/02/06 Javascript
vue select组件的使用与禁用实现代码
2018/04/10 Javascript
vue实现购物车案例
2020/05/30 Javascript
Vue-cli assets SubDirectory及PublicPath区别详解
2020/08/18 Javascript
python迭代器的使用方法实例
2013/11/21 Python
Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
2014/06/10 Python
利用Python的Django框架中的ORM建立查询API
2015/04/20 Python
Python语言描述机器学习之Logistic回归算法
2017/12/21 Python
Python实现二叉树的常见遍历操作总结【7种方法】
2019/03/06 Python
详解Python_shutil模块
2019/03/15 Python
浅谈python的输入输出,注释,基本数据类型
2019/04/02 Python
搞定这套Python爬虫面试题(面试会so easy)
2019/04/03 Python
numpy数组之存取文件的实现示例
2019/05/24 Python
python 字典操作提取key,value的方法
2019/06/26 Python
在pycharm中debug 实时查看数据操作(交互式)
2020/06/09 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
2020/08/17 Python
html5 利用重力感应实现摇一摇换颜色可用来做抽奖等等
2014/05/07 HTML / CSS
工程现场管理求职自荐信
2013/10/02 职场文书
普通院校学生的自荐信
2013/11/27 职场文书
饲料采购员岗位职责
2013/12/19 职场文书
小学生开学感言
2014/02/28 职场文书
检察院院长群众路线教育实践活动个人整改措施
2014/10/04 职场文书
游戏《铁拳》动画化!2022年年内播出
2022/03/21 日漫