利用django中间件CsrfViewMiddleware防止csrf攻击
一、在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就是此原理防止的。
五、django中间件
这里简单说一下django的中间件
我们从浏览器发出一个请求 Request,得到一个响应后的内容 HttpResponse ,这个请求传递到 Django的过程如下:
也就是说,每一个请求都是先通过中间件中的 process_request 函数,这个函数返回 None 或者 HttpResponse 对象,如果返回前者,继续处理其它中间件,如果返回一个 HttpResponse,就处理中止,返回到网页上。
我们可以据此做很多关于网络攻击的安全防护。比如:拦截器,过滤器,防止xss攻击 等等。
django中间件参考https://code.ziqiangxuetang.com/django/django-middleware.html
转载于:https://www.cnblogs.com/lovenethui/p/9760382.html
利用django中间件CsrfViewMiddleware防止csrf攻击相关推荐
- python middleware模块_详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击...
一.在django后台处理 1.将django的setting中的加入django.contrib.messages.middleware.MessageMiddleware,一般新建的django项 ...
- csrf跨站请求伪造,CBV添加装饰器,auth认证模块,基于django中间件设计项目功能
文章目录 csrf跨站请求伪造 csrf的定义 csrf的分类 csrf的攻击过程 csrf的攻击条件 举例说明 Django提供的解决策略 csrf相关装饰器 FBV CBV 方法一(直接在类中的某 ...
- Django CSRF(什么是CSRF?)\Django前后端分离csrf token获取方式
文章目录 Django CSRF 什么是CSRF? Django CSRF Django CSRF 中间件 Django,Ajax提交csrf_token处理 Django 设置 cookie 中的 ...
- Django中如何防范CSRF跨站点请求伪造攻击
CSRF概念 CSRF跨站点请求伪造(Cross-Site Request Forgery). 攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望 ...
- Django从理论到实战(part53)--CSRF攻击
学习笔记,仅供参考,有错必纠 摘自:某网课笔记 文章目录 CSRF攻击 CSRF攻击概述 CSRF攻击原理 防御CSRF攻击 CSRF攻击 CSRF攻击概述 CSRF(Cross Site Reque ...
- django view返回form error_Django(解决被钓鱼CSRF、Django中间件、反射)
今日内容概要 django中间件 全局用户身份校验 全局用户权限校验(补充) 全局访问频率校验 ... csrf跨站请求伪造 基于django中间件一个重要的编程思想(反射) https://www. ...
- Web框架之Django_09 重要组件(Django中间件、csrf跨站请求伪造)
摘要 Django中间件 csrf跨站请求伪造 一.Django中间件: 什么是中间件? 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于 ...
- Django项目--csrf攻击
1.案例流程图: 2.django防止csrf的方式: 1 ) Django中默认打开csrf中间件.settings.py文件中: MIDDLEWARE_CLASSES = ('django.con ...
- django CBV装饰器 自定义django中间件 csrf跨站请求伪造 auth认证模块
CBV加装饰器 第一种 @method_decorator(装饰器) 加在get上 第二种 @method_decorator(login_auth,name='get') 加在类上 第三种 @met ...
最新文章
- 【Ubuntu】Ubuntu下的录频软件SimpleScreenRecorder
- 02_记录学生相关数据,输出平均分数
- oracle union 类型转换,Oracle 中 union 和union all 的简单使用说明
- python全栈_007_Python3格式化输出
- hadoop—集群配置历史服务器及访问历史服务器日志
- 使用SynchronousQueue实现生产者/消费者
- ROS(Robot Operating System)笔记 : 2.创建并配置package
- 【连载】如何掌握openGauss数据库核心技术?秘诀四:拿捏事务机制(2)
- python中seaborn_python的seaborn模块
- centos6 安装和配置PHP 7.0
- BZOJ2933 : [Poi1999]地图
- 常用的HTML5和CSS3标签及用法(入门篇)
- jscript对URL参数进行编码与解码
- 2.jenkins 新建一个任务
- 如何完全卸载mysql呢
- 计算机编程常用术语英文词汇
- 高频电子线路资料强力推荐!
- python识别不了self_Graphene Python类无法识别self
- Markdown语法图文详解
- JavaScript中的常用鼠标事件以及小天使图片拖拽
热门文章
- Bit-Z 关于交易隐藏及下线说明
- gRPC学习记录(三)--proto3知识
- 将一个指针 free 两次之后会发生什么?
- 又掌握了一项新技能 - 断点调试 Gradle 插件
- 使用web3.js进行开发
- 全能HOOK框架 JNI NATIVE JAVA ART DALVIK
- Google Apps – Framework, Phonesky, GmsCore w/ AOSP Build.
- 服务器和操作系统怎么看,服务器和操作系统怎么看
- python列表切片得到的是列表还是字符串_python中列表的切片问题 python arry怎么取列切片...
- 设计买什么笔记本电脑_大一设计专业新生,买什么牌子笔记本电脑合适?