详解利用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实现的数据结构与算法之队列详解
Apr 22 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
Aug 18 Python
django 2.0更新的10条注意事项总结
Jan 05 Python
Windows上使用Python增加或删除权限的方法
Apr 24 Python
python实现图书馆研习室自动预约功能
Apr 27 Python
python pcm音频添加头转成Wav格式文件的方法
Jan 09 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
May 16 Python
ML神器:sklearn的快速使用及入门
Jul 11 Python
Pyinstaller 打包exe教程及问题解决
Aug 16 Python
python实现LRU热点缓存及原理
Oct 29 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
Nov 19 Python
python3从网络摄像机解析mjpeg http流的示例
Nov 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
火影忍者:三大瞳力之一的白眼,为什么没有写轮眼那么出色?
2020/03/02 日漫
通过ICQ网关发送手机短信的PHP源程序
2006/10/09 PHP
phpmyadmin 常用选项设置详解版
2010/03/07 PHP
php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
2010/12/19 PHP
PHP IF ELSE简化/三元一次式的使用
2011/08/22 PHP
php实现点击可刷新验证码
2015/11/07 PHP
Nginx实现反向代理
2017/09/20 Servers
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
2010/11/28 Javascript
javaScript NameSpace 简单说明介绍
2013/07/18 Javascript
JS实现超简洁网页title标题跑动闪烁提示效果代码
2015/10/23 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
2015/11/04 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
如何使用Bootstrap 按钮实例详解
2017/03/29 Javascript
js CSS3实现卡牌旋转切换效果
2017/07/04 Javascript
webpack多页面开发实践
2017/12/18 Javascript
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
vue实现移动端触屏拖拽功能
2020/08/21 Javascript
javascript实现前端分页功能
2020/11/26 Javascript
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
浅析Python中的多条件排序实现
2016/06/07 Python
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
Python机器学习之SVM支持向量机
2017/12/27 Python
解决seaborn在pycharm中绘图不出图的问题
2018/05/24 Python
详解pandas安装若干异常及解决方案总结
2019/01/10 Python
Python实现简单的列表冒泡排序和反转列表操作示例
2019/07/10 Python
python关闭占用端口方式
2019/12/17 Python
Python类继承和多态原理解析
2020/02/05 Python
法国大使拉杆箱官网:DELSEY Paris
2018/03/20 全球购物
应届大专生自荐书
2014/06/16 职场文书
2015年元宵节活动总结
2015/02/06 职场文书
综合管理员岗位职责
2015/02/11 职场文书
搞笑老公保证书
2015/02/26 职场文书
陪护人员误工证明
2015/06/24 职场文书
爱护公物主题班会
2015/08/17 职场文书
八年级语文教学反思
2016/03/03 职场文书
暑假开始了,你的暑假学习计划写好了吗?
2019/07/04 职场文书