博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cookie和session-csrf防护-中间件
阅读量:6123 次
发布时间:2019-06-21

本文共 1658 字,大约阅读时间需要 5 分钟。

cookie概念: 是由服务器生成,保存在浏览器端的一小段文本信息。cookie特点:1) cookie是以键值对进行存储的。2) 浏览器访问网站时,会将本地保存的跟网站相关的所有cookie发送给网站的服务器。3) cookie是基于域名安全的。 4) cookie是有过期时间的,默认关闭浏览器之后过期。 设置cookie: set_cookie(key, value, max_age='过期时间')。 读取cookie: request.COOKIES(保存浏览器发过来的cookie信息) 删除cookie. delete_cookie(key)
 
session概念: 保存在服务器端的文本信息,默认保存在服务器端的django_session表中。sesssion特点:1) session也是以键值对进行存储的。2) session依赖于cookie, session信息对应的唯一标识默认保存在sessionidcookie中。3) session是有过期时间的,默认两周之后过期。设置session: request.session['键']='值' 获取session: 变量 = request.session['键'] 删除session: request.session.flush() 设置session的过期时间: request.session.set_expire('秒数') 扩展: 1) django_session表中是由INSTALLED_APPS中的'django.contrib.sessions'应用生成的。 2) session的存储需要借助于MIDDLEWARE_CLASSES中的 'django.contrib.sessions.middleware.SessionMiddleware'中间件。 3) 可以通过SESSION_ENGINE配置session存储在什么地方。
 
csrf跨站请求伪造: 如果用户登录了网站,并且未退出, 点击了伪造链接,浏览器就会以登录用户的身份去访问A网站,可能会造成密码的的修改和财产的损失等,这就是csrf请求伪造(跨站请求伪造)。
 
Django框架针对post提交数据具有csrf的防护验证,如果需要使用Django的csrf防护,需要按以下步骤:1) 打开Django配置文件中的csrf防护中间件。 2)在使用表单post提交时,需要在表单中加上{ % csrf_token % }标签。
如果是ajax post请时,也需要在页面上加上{ % csrf_token % }标签。
防御原理:1) 访问页面时,django会把{ % csrf_token % }标签替换为一个名为csrfmiddlewaretoken的隐藏域。2)同时django网站会让浏览器保存一个名为csrftoken的cookie信息。3)在进行表单提交或者ajax post提交时,csrfmiddlewaretoken隐藏域的值和crsftoken cookie的值都会被提交给服务器,django框架中的csrf防护中间件会对这两个值进行对比,如果一致,则csrf验正通过,可以进行后续操作,否则出现403错误。 中间件流程
request对像产生: 请求到达Django框架内部时,Django框架会把请求报文中的请求信息封装在request对象的属性中===>依次从上到下调用MIDDLEWARE_CLASSES注册中间件类中的process_request函数===>根据请求的url地址进行匹配===>依次从上到下调用MIDDLEWARE_CLASSES注册中间件类中的process_view函数===>调用视图函数===>依次从下到上调用MIDDLEWARE_CLASSES注册中间件类中的process_view函数
 
 

转载于:https://www.cnblogs.com/snailon/p/9021654.html

你可能感兴趣的文章
Spring常用注解
查看>>
我的友情链接
查看>>
PCS子层有什么用?
查看>>
查看端口,关闭端口
查看>>
代码托管平台简介
查看>>
linux:yum和apt-get的区别
查看>>
Sentinel 1.5.0 正式发布,引入 Reactive 支持
查看>>
如何对网站进行归档
查看>>
数据库之MySQL
查看>>
2019/1/15 批量删除数据库相关数据
查看>>
数据类型的一些方法
查看>>
Mindjet MindManager 2019使用教程:
查看>>
游戏设计的基本构成要素有哪些?
查看>>
详解 CSS 绝对定位
查看>>
AOP
查看>>
我的友情链接
查看>>
NGUI Label Color Code
查看>>
.NET Core微服务之基于Polly+AspectCore实现熔断与降级机制
查看>>
vue组件开发练习--焦点图切换
查看>>
浅谈OSI七层模型
查看>>