详解利用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控制台中实现进度条功能
Nov 10 Python
Python使用sftp实现上传和下载功能(实例代码)
Mar 14 Python
python使用TensorFlow进行图像处理的方法
Feb 28 Python
Python基础之文件读取的讲解
Feb 16 Python
Python实现钉钉发送报警消息的方法
Feb 20 Python
Python中dict和set的用法讲解
Mar 28 Python
python实现电子书翻页小程序
Jul 23 Python
在pycharm中配置Anaconda以及pip源配置详解
Sep 09 Python
Windows平台Python编程必会模块之pywin32介绍
Oct 01 Python
Django框架models使用group by详解
Mar 11 Python
Python fileinput模块如何逐行读取多个文件
Oct 05 Python
Python使用pyenv实现多环境管理
Feb 05 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
用IE远程创建Mysql数据库的简易程序
2006/10/09 PHP
php绘制圆形的方法
2015/01/24 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
php输出xml属性的方法
2015/03/19 PHP
PHP与Web页面的交互示例详解二
2020/08/04 PHP
利用ASP发送和接收XML数据的处理方法与代码
2007/11/13 Javascript
FireFox与IE 下js兼容触发click事件的代码
2008/11/20 Javascript
jquery设置按钮停顿3秒不可用
2014/03/07 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
实例详解ECMAScript5中新增的Array方法
2016/04/05 Javascript
JavaScript生成带有缩进的表格代码
2016/06/15 Javascript
JavaScript编程设计模式之观察者模式(Observer Pattern)实例详解
2017/10/25 Javascript
ztree实现左边动态生成树右边为内容详情功能
2017/11/03 Javascript
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
2020/10/27 Javascript
[02:05]2014DOTA2西雅图邀请赛 专访啸天mik夫妻档
2014/07/08 DOTA
python实现k均值算法示例(k均值聚类算法)
2014/03/16 Python
Python检测数据类型的方法总结
2019/05/20 Python
PyQt5响应回车事件的方法
2019/06/25 Python
在python中利用dict转json按输入顺序输出内容方式
2020/02/27 Python
使用Python实现批量ping操作方法
2020/05/06 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
2020/05/20 Python
python 根据列表批量下载网易云音乐的免费音乐
2020/12/03 Python
详解python3类型注释annotations实用案例
2021/01/20 Python
python网络爬虫实现发送短信验证码的方法
2021/02/25 Python
布里斯班女装时尚品牌:Adrift
2017/12/28 全球购物
FOREO斐珞尔官方旗舰店:LUNA露娜洁面仪
2018/03/11 全球购物
德国最大的婴儿用品网上商店:Kidsroom.de(支持中文)
2020/09/02 全球购物
C语言怎样定义和声明全局变量和函数最好
2013/11/26 面试题
文言文形式的学生求职信
2013/12/03 职场文书
商务英语应届生自我鉴定
2013/12/08 职场文书
淘宝客服专员岗位职责
2014/04/11 职场文书
干部个人对照检查材料
2014/08/25 职场文书
2015年教师党员自我评价材料
2015/03/04 职场文书
仓库管理制度范本
2015/08/04 职场文书
《王者天下》第4季首话新剧照 4月9日正式开播
2022/04/07 日漫
Windows Server 修改远程桌面端口的实现
2022/06/25 Servers