cookie的生命周期、访问限制、作用域、prefixes
cookie的生命周期
cookie的生命周期可以通过两种方式定义:
- 会话期cookie是最简单的cookie:浏览器关闭后会被自动删除。会话期cookie不需要指定过期时间(Expires)或者有效期(Max-Age)。需要注意的是,有些浏览器提供了会话恢复功能,这种情况即使关闭了浏览器,会话期cookie也会被保留下来,这会导致cookie的生命周期无限期延长
- 持久性cookie的生命周期取决于过期时间(Expires)或者有效期(Max-Age)指定的一段时间。
- 当Cookie的过期时间被设定时,设定的日期和时间只与客户端相关,而不是服务端。
限制访问Cookie
- Secure:标记为Secure的cookie通过被HTTPS协议加密过的请求发送给服务端。可以预防man-in-the-middle攻击。
- 从Chrome52和firefox 52开始,非Https的站点无法使用Cookie的Secure标记。
- HttpOnly:JavaScript
Document.cookieAPI无法访问带有HttpOnly属性的cookie,此类cookie仅作用于服务器。此属性有助于缓解跨站点脚本(XSS)攻击。
Cookie的作用域
- Domain:指定了哪些主机可以接受cookie。如果不指定,默认为origin,不包含子域名。如果指定了Domain,一般包含子域名。
- 当前大多数浏览器遵循 RFC 6265,设置 Domain 时 不需要加前导点。浏览器不遵循该规范,则需要加前导点,例如:
Domain=.mozilla.org
- 当前大多数浏览器遵循 RFC 6265,设置 Domain 时 不需要加前导点。浏览器不遵循该规范,则需要加前导点,例如:
- Path:指定了主机下的哪些路径可以接受cookie。以"/"作为路径分隔符,子路径也会被匹配。
- SameSite:允许服务器要求某个cookie在跨站请求时不会被发送,其中Site由可注册域定义,从而可以组织跨站请求伪造攻击(CSRF)。取值如下:
- None:浏览器会在同站请求、跨站请求下继续发送cookies,不区分大小写。
- Strict:浏览器只在访问相同站点时发送cookie。
- Lax:与Strict类似,但用户从外部站点导航至URL时(例如通过链接)除外。在新版本浏览器中,为默认选项为默认选项,Same-site cookies 将会为一些跨站子请求保留,如图片加载或者 frames 的调用,但只有当用户从外部站点导航到URL时才会发送。如 link 链接。
- 以前,SameSite如果没有设置,默认行为等同于None,cookies会被包含在任何请求中,包括跨站请求。
- 大多数主流浏览器正在将SameSite的默认值迁移到Lax,如果要指定cookie在同站、跨站请求都被发送,需要明确指定SameSite为None。
Cookie prefixes
__Host-:如果cookie名称具有此前缀,仅当它也用Secure属性标记,是从安全源发送的,不包含Domain属性,并将Path属性设置为/时,它才在Set-Cookieheader中接受。这些cookie可以被视为"domain-locked"。__Secure-:如果cookie明白包含此前缀,则仅当它也用Secure属性标记,是从安全源发送的,它才在Set-Cookieheader中接受。此前缀限制弱于__Host-前缀。- 带有这些前缀的cookie,如果不符合其限制的会被浏览器拒绝。
参考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Cookies
关联cookie知识点:Cookie的HttpOnly、secure、domain属性
cookie的生命周期、访问限制、作用域、prefixes的更多相关文章
- 如何调整cookie的生命周期
一.什么是cookie 形象比喻成“网络身份证” 指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密). (1)记录信息的盒子(2)识别每一个网络用户的证件 ...
- spring bean 生命周期和 ? 作用域? spirng bean 相互依赖? jvm oom ? jvm 监控工具? ThreadLocal 原理
1. spring bean 生命周期 1. 实例化一个bean ,即new 2. 初始化bean 的属性 3. 如果实现接口 BeanNameAware ,调用 setBeanName 4. Bea ...
- cookie、localStorage、sessionStorage 的生命周期
生命周期 存储 生命周期 cookie 没有设置 expires 选项时,cookie 的生命周期仅限于当前会话中,关闭浏览器意味着这次会话的结束,所以会话 cookie 仅存在于浏览器打开状态之下. ...
- [转载]Cookie与Session的区别与联系及生命周期
前几天面试问了一个问题,当时记不太清了,上网查了下发现这个问题还真的很有讲究而且很重要,自己总结下做下记录. 一.Session与Cookie介绍 这些都是基础知识,不过有必要做深入了解.先简单介绍一 ...
- Cookie 和 Session 的区别和联系?session的生命周期?多个服务器部署session的管理?
一.session 和 cookie 1.cookie Cookie会根据响应报文里的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie.当下次客户端再向服务端发起请求时,客户端会 ...
- Java对象的生命周期与作用域的讨论(转)
导读: Java对象的生命周期大致包括三个阶段:对象的创建,对象的使用,对象的清除.因此,对象的生命周期长度可用如下的表达式表示:T = T1 + T2 +T3.其中T1表示对象的创建时间,T2表示对 ...
- Cookie与Session的区别与联系及生命周期
Cookie与Session的区别与联系及生命周期 一.Session与Cookie介绍 这些都是基础知识,不过有必要做深入了解.先简单介绍一下. 二者的定义: 当你在浏览网站的时候,WEB 服务器会 ...
- session生命周期,与cookie的区别
sessinon在用户访问第一次访问服务器时创建. Session什么时候失效? 1. 服务器会把长时间没有活动的Session从服务器内存中清除,此时Session便失效.Tomcat中Sessio ...
- Spring中Bean的作用域、生命周期
Bean的作用域.生命周期 Bean的作用域 Spring 3中为Bean定义了5中作用域,分别为singleton(单例).protot ...
随机推荐
- SpringCloud微服务实战——搭建企业级开发框架(四):集成SpringCloud+SpringBoot
1.在GitEgg工程的根目录,最上级父pom.xml文件中引入需要依赖的库及Maven插件,设置编码方式: <!--?xml version="1.0" encoding= ...
- 【UE4 C++】定时器 Timer 与事件绑定
概念 定时执行操作,可执行一次,或循环执行直到手动终止 定时器在全局定时器管理器(FTimerManager 类型)中管理.全局定时器管理器存在于 游戏实例 对象上以及每个 场景 中 定时器需要绑定委 ...
- Nginx高效核心
Nginx高效核心 目录 Nginx高效核心 Introduction I/O特性 同步/异步 阻塞/非阻塞 常见的I/O模型 阻塞型 非阻塞型 多路复用模型(多路阻塞) 信号驱动模型 异步模型 Ng ...
- elasticsearch的dsl查询
测试es的dsl查询,准备数据,在插入数据的时候,如果index.type.mapping都没有,es会自动创建 一.数据的准备 curl -XPOST "http://192.168.99 ...
- MIPI的走线阻抗
MIPI的走线阻抗100欧的要求是根据LVDS(Low Voltage Differential Signaling)电平定义的. LVDS差分信号PN两线最大幅度是350mV,内部一个恒流源电流是3 ...
- Java 中 List 分片的 5 种方法!
前些天在实现 MyBatis 批量插入时遇到了一个问题,当批量插入的数据量比较大时,会导致程序执行报错,如下图所示: 原因是 MySQL 只能执行一定长度的 SQL 语句,但当插入的数据量较多时,会生 ...
- cesium制作自己的骑行轨迹
制作自己的骑行轨迹 马上国庆节了,计划骑车回家,突然想到把所有的骑行线路汇总一下,无奈码表和APP不支持这样的操作,出于职业病,在此操作一下. 我用的是黑鸟码表,可以导出fit运动轨迹,但是fit还需 ...
- SimpleNVR流媒体服务系统录像功能解析
录像的回放与观看是许多人在使用视频监控时必不可少的需求.人不可能每时每刻都观看视频,而录像能对摄像机的视频信息进行存储,方便用户的后期回放查看,因此,SimpleNVR的录像功能应运而生. ...
- 组件通过props属性传值
组件之间的传值 组件是一个单独功能模块的封装,有属于自己的data和methods,一个组件的 data 选项必须是一个函数 为什么必须是函数:因为只有当data是函数时,不同实例调用同一个组件时才会 ...
- Go defer 原理和源码剖析
Go 语言中有一个非常有用的保留字 defer,它可以调用一个函数,该函数的执行被推迟到包裹它的函数返回时执行. defer 语句调用的函数,要么是因为包裹它的函数执行了 return 语句,到达了函 ...