详解利用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实现Tab自动补全和历史命令管理的方法
Mar 12 Python
浅谈用VSCode写python的正确姿势
Dec 16 Python
使用python 爬虫抓站的一些技巧总结
Jan 10 Python
Python打印输出数组中全部元素
Mar 13 Python
python3库numpy数组属性的查看方法
Apr 17 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
May 02 Python
python版本单链表实现代码
Sep 28 Python
Python对象中__del__方法起作用的条件详解
Nov 01 Python
对numpy下的轴交换transpose和swapaxes的示例解读
Jun 26 Python
Django 项目重命名的实现步骤解析
Aug 14 Python
pandas的相关系数与协方差实例
Dec 27 Python
scrapy实践之翻页爬取的实现
Jan 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
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
2008/11/14 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
PHP常用的排序和查找算法
2015/08/06 PHP
php进行ip地址掩码运算处理的方法
2016/07/11 PHP
PHP 搜索查询功能实现
2016/11/29 PHP
php中类和对象:静态属性、静态方法
2017/04/09 PHP
详解php用static方法的原因
2018/09/12 PHP
javaScript 读取和设置文档元素的样式属性
2009/04/14 Javascript
Javascript学习笔记-详解in运算符
2011/09/13 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
jQuery实现商品活动倒计时
2015/10/16 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
不同js异步函数同步的实现方法
2016/05/28 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
2016/08/24 Javascript
boostrapTable的refresh和refreshOptions区别浅析
2017/01/22 Javascript
jQuery使用正则验证15/18身份证的方法示例
2017/04/27 jQuery
Angular.js中下拉框实现渲染html的方法
2017/06/18 Javascript
js实现扫雷小程序的示例代码
2017/09/27 Javascript
layui 富文本编辑器和textarea值的相互传递方法
2019/09/18 Javascript
纯JS实现五子棋游戏
2020/05/28 Javascript
python多重继承新算法C3介绍
2014/09/28 Python
Python中Django框架下的staticfiles使用简介
2015/05/30 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
2016/01/20 Python
12步入门Python中的decorator装饰器使用方法
2016/06/20 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
Bjorn Borg官方网上商店:国际运动时尚品牌
2016/08/27 全球购物
英国著名的小众美容品牌网站:Alyaka
2017/08/08 全球购物
Gtech官方网站:地毯清洁器、吸尘器及园艺设备
2018/05/23 全球购物
Hotels.com拉丁美洲:从豪华酒店到经济型酒店的预定优惠和折扣
2019/12/09 全球购物
项目资料员岗位职责
2013/12/10 职场文书
《天安门广场》教学反思
2014/04/23 职场文书
小学优秀班干部事迹材料
2014/05/25 职场文书
行政专员岗位职责说明书
2014/07/30 职场文书
五年级作文之想象作文
2019/10/30 职场文书
Python采集股票数据并制作可视化柱状图
2022/04/04 Python
Redis基本数据类型哈希Hash常用操作命令
2022/06/01 Redis