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.cookie API无法访问带有HttpOnly属性的cookie,此类cookie仅作用于服务器。此属性有助于缓解跨站点脚本(XSS)攻击。

Cookie的作用域

  • Domain:指定了哪些主机可以接受cookie。如果不指定,默认为origin,不包含子域名。如果指定了Domain,一般包含子域名。

    • 当前大多数浏览器遵循 RFC 6265,设置 Domain 时 不需要加前导点。浏览器不遵循该规范,则需要加前导点,例如:Domain=.mozilla.org
  • 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的更多相关文章

  1. 如何调整cookie的生命周期

    一.什么是cookie 形象比喻成“网络身份证” 指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密). (1)记录信息的盒子(2)识别每一个网络用户的证件 ...

  2. spring bean 生命周期和 ? 作用域? spirng bean 相互依赖? jvm oom ? jvm 监控工具? ThreadLocal 原理

    1. spring bean 生命周期 1. 实例化一个bean ,即new 2. 初始化bean 的属性 3. 如果实现接口 BeanNameAware ,调用 setBeanName 4. Bea ...

  3. cookie、localStorage、sessionStorage 的生命周期

    生命周期 存储 生命周期 cookie 没有设置 expires 选项时,cookie 的生命周期仅限于当前会话中,关闭浏览器意味着这次会话的结束,所以会话 cookie 仅存在于浏览器打开状态之下. ...

  4. [转载]Cookie与Session的区别与联系及生命周期

    前几天面试问了一个问题,当时记不太清了,上网查了下发现这个问题还真的很有讲究而且很重要,自己总结下做下记录. 一.Session与Cookie介绍 这些都是基础知识,不过有必要做深入了解.先简单介绍一 ...

  5. Cookie 和 Session 的区别和联系?session的生命周期?多个服务器部署session的管理?

    一.session 和 cookie 1.cookie Cookie会根据响应报文里的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie.当下次客户端再向服务端发起请求时,客户端会 ...

  6. Java对象的生命周期与作用域的讨论(转)

    导读: Java对象的生命周期大致包括三个阶段:对象的创建,对象的使用,对象的清除.因此,对象的生命周期长度可用如下的表达式表示:T = T1 + T2 +T3.其中T1表示对象的创建时间,T2表示对 ...

  7. Cookie与Session的区别与联系及生命周期

    Cookie与Session的区别与联系及生命周期 一.Session与Cookie介绍 这些都是基础知识,不过有必要做深入了解.先简单介绍一下. 二者的定义: 当你在浏览网站的时候,WEB 服务器会 ...

  8. session生命周期,与cookie的区别

    sessinon在用户访问第一次访问服务器时创建. Session什么时候失效? 1. 服务器会把长时间没有活动的Session从服务器内存中清除,此时Session便失效.Tomcat中Sessio ...

  9. Spring中Bean的作用域、生命周期

                                   Bean的作用域.生命周期 Bean的作用域 Spring 3中为Bean定义了5中作用域,分别为singleton(单例).protot ...

随机推荐

  1. 【Azure 应用服务】App Service For Linux 如何在 Web 应用实例上住抓取网络日志

    问题描述 在App Service For Windows的环境中,我们可以通过ArmClient 工具发送POST请求在Web应用的实例中抓取网络日志,但是在App Service For Linu ...

  2. 生产环境全链路压测平台 Takin

    什么是Takin? Takin是基于Java的开源系统,可以在无业务代码侵入的情况下,嵌入到各个应用程序节点,实现生产环境的全链路性能测试,适用于复杂的微服务架构系统. Takin核心原理图 Taki ...

  3. 面试题 08.12. N皇后

    题目 设计一种算法,打印 N 皇后在 N × N 棋盘上的各种摆法,其中每个皇后都不同行.不同列,也不在对角线上.这里的"对角线"指的是所有的对角线,不只是平分整个棋盘的那两条对角 ...

  4. Python语法2

    目录 选择结构 循环结构 文件读写 函数 类和对象 选择结构 if,elif,else,使用时注意条件的先后顺序 通过缩进四个空格来区分代码块 # 从控制台输入 age = int(input(&qu ...

  5. [软工顶级理解组] 团队规划和任务拆解(Beta)

    目录 需求再分析 功能增减 管理改进 任务分解 人员管理 需求再分析 在Alpha阶段,我们的产品得到了用户的广泛好评,但是还是存在一些问题. 登录不稳定,登录速度慢等问题:这是北航VPN本身的不稳定 ...

  6. ruby基本图片上传

    图片上传问题 在我们的项目里,需要实现海报的图片上传,便于更好地向外界展示一个社团活动的基本内容,但是在处理中间件相关问题时遇到了一点小小的挫折.不过这并不要紧,OSS对象存储服务固然好,但是本着交完 ...

  7. BUAA2020软工作业(五)——软件案例分析

    项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 软件案例分析作业 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方面 ...

  8. nio之缓冲区(Buffer)理解

    一.缓冲区简介 Nio中的 Buffer 是用于存储特定基础类型的一个容器.为了能熟练的使用 Nio中的各种 Buffer , 我们需要理解 Buffer 中的 三个重要 的属性. 1. capaci ...

  9. DH密钥交换

    DH密钥交换 密模运算 所谓幂模,就是先做一次幂运算,再做一次模运算. 模运算有以下性质: 也就是说,先模再乘和先乘再模,只要最后都模了同一个模数,结果都是一样. 有了这个性质,我们首先得到幂模运算的 ...

  10. analysis_screencap

    #!/usr/bin/env pythonfrom PIL import Imageimg = Image.open("./screen.png")maps = [[] for i ...