详解利用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日志模块logging简介
Apr 13 Python
Python中pip安装非PyPI官网第三方库的方法
Jun 02 Python
Python字符串格式化
Jun 15 Python
python实现根据主机名字获得所有ip地址的方法
Jun 28 Python
python数据封装json格式数据
Mar 04 Python
Python地图绘制实操详解
Mar 04 Python
Python/Django后端使用PIL Image生成头像缩略图
Apr 30 Python
python反编译学习之字节码详解
May 19 Python
python dataframe NaN处理方式
Dec 26 Python
解决pyCharm中 module 调用失败的问题
Feb 12 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
Mar 28 Python
Python中使用tkFileDialog实现文件选择、保存和路径选择
May 20 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 5.0对象模型深度探索之绑定
2006/09/05 PHP
php&mysql 日期操作小记
2012/02/27 PHP
常用PHP封装分页工具类
2017/01/14 PHP
php自动加载代码实例详解
2021/02/26 PHP
Javascript解析URL方法详解
2014/12/05 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
2015/10/09 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
2016/06/16 Javascript
jQuery悬停文字提示框插件jquery.tooltipster.js用法示例【附demo源码下载】
2016/07/19 Javascript
BootStrap中的表单大全
2016/09/07 Javascript
jQuery EasyUI Draggable拖动组件
2017/03/01 Javascript
jQuery实现的淡入淡出图片轮播效果示例
2018/08/29 jQuery
Vue 中使用富文本编译器wangEditor3的方法
2019/09/26 Javascript
细述Javascript的加法运算符的具体使用
2019/10/18 Javascript
在vue中使用Echarts利用watch做动态数据渲染操作
2020/07/20 Javascript
jQuery实现雪花飘落效果
2020/08/02 jQuery
Python写的一个简单DNS服务器实例
2014/06/04 Python
python使用电子邮件模块smtplib的方法
2016/08/28 Python
python使用itchat实现手机控制电脑
2018/02/22 Python
遗传算法python版
2018/03/19 Python
Django实现全文检索的方法(支持中文)
2018/05/14 Python
Django异步任务之Celery的基本使用
2019/03/23 Python
PyQt5 对图片进行缩放的实例
2019/06/18 Python
python3使用腾讯企业邮箱发送邮件的实例
2019/06/28 Python
Flask框架学习笔记之消息提示与异常处理操作详解
2019/08/15 Python
python中rc1什么意思
2020/06/19 Python
英国信箱在线鲜花速递公司:Bloom & Wild
2019/03/10 全球购物
团支书的期末学习总结自我评价
2013/11/01 职场文书
公务员职务工作的自我评价
2013/11/01 职场文书
搞笑婚礼主持词
2014/03/13 职场文书
《社戏》教学反思
2014/04/15 职场文书
机械专业求职信范文
2014/07/15 职场文书
2014国庆节演讲稿:祖国在我心中(400字)
2014/09/25 职场文书
好员工观后感
2015/06/17 职场文书
学籍证明模板
2015/06/18 职场文书
数据库连接池
2021/04/06 MySQL
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
2022/04/18 MySQL