cookie 里面都包含什么属性?

结论先行:

Cookie 中除了名称和值外,还有几个比较常见的,例如:

Domain 域指定了 cookie 可以发送到哪些域,只有发送到指定域或其子域的请求才会携带该cookie;

Path 路径指定哪些请求 URL 路径可以访问 cookie,只有在指定的路径下发起的请求才会携带该 cookie;

Expires/Max-size 过期时间设置 cookie 的过期时间。在这个时间之后,客户端将不再发送该cookie;

Secure 安全标志如果设置了这个标志,那么cookie 只有在通过 HTTPS 连接时才会发送到服务器。而不会通过 HTTP 协议;

HttpOnly:如果设置了这个标志,那么 JavaScript 将无法操作该 cookie,这样可以防止跨站脚本攻击获取到cookie 信息。只有服务端可以通过响应头设置它们;

具体解析:

除了名称和值之外,cookie 还具有控制很多方面的属性,包括安全方面、生命周期以及它们在浏览器中的访问位置和方式等。

名称(Name):cookie 的名称,用于在服务器端识别和访问该 cookie

值(Value):与 cookie 相关联的值,可以是任何字符串或者文本

1、Domain:告诉浏览器允许哪些主机访问 cookie

如果未指定,则默认为设置 cookie 的同一主机。因此,当使用客户端 JavaScript 访问 cookie 时,只能访问与 URL 域相同的 cookie。

同样,只有与 HTTP 请求的域共享相同域的 cookie 可以与请求头一起发送到服务端。

注意,拥有此属性并不意味着可以为任何域设置 cookie,因为这显然会带来巨大的安全风险。 此属性存在的唯一原因就是减少域的限制并使 cookie 在子域上可访问

例如,如果当前的域是 abc.xyz.com,并且在设置 cookie 时如果不指定 Domain 属性,则默认为 abc.xyz.com,并且 cookie 将仅限于该域。 但是,可能希望相同的 cookie 也可用于其他子域,因此可以设置 Domain=xyz.com 以使其可用于其他子域,如 def.xyz.com 和主域 xyz.com。

2、Path:指定访问 cookie 必须存在的请求 URL 中的路径

除了将 cookie 限制到域之外,还可以通过路径来限制它。

路径属性为 Path=/store 的 cookie 只能在路径 /store 及其子路径 /store/cart、/store/gadgets 等上访问

3、Expires/Max-size:设置 cookie 的过期时间

若设置其值为一个时间,那么当到达此时间后,cookie 就会失效。

不设置的话默认值是 Session,意思是 cookie 会和 session 一起失效。当浏览器关闭(不是浏览器标签页) 后,cookie 就会失效。

除此之外,它还可以通过将过期日期设置为过去来删除 cookie。

4、Secure

具有 Secure 属性的 cookie 仅可以通过安全的 HTTPS 协议发送到服务器,而不会通过 HTTP 协议。

这有助于通过使 cookie 无法通过不安全的连接访问来防止中间人攻击。除非网站实用不安全的 HTTP 连接,否则应该始终将此属性与所有 cookie 一起使用。

5、HttpOnly

此属性使 cookie 只能通过服务端访问。

因此,只有服务端可以通过响应头设置它们,然后浏览器会将它们与每个后续请求的头一起发送到服务器,并且它们将无法通过客户端 JavaScript 访问

这可以在一定程度上帮助保护带有敏感信息(如身份验证 token)的 cookie 免受 XSS 攻击,因为任何客户端脚本都无法读取 cookie。

但这并不意味着可以完全免受 XSS 攻击。因为,如果攻击者可以在网站上执行第三方脚本,那可能无法访问 cookie,相反,他们可以直接向服务端执行相关的 API 请求。

因此,想象一下用户访问了一个页面,黑客在网站上注入了恶意脚本。他们可以使用该脚本执行任何 API,并在他们不知道的情况下代表用户执行操作。

6、SameSite 标志(SameSite)

指定了浏览器是否应该将 cookie 与跨站点请求一起发送。

它可以设置为 Strict、Lax 或 None。

 

总结: 

这些属性中的大部分都是可选的,但通常建议至少设置名称、值和域属性来确保cookie 能够按预期工作。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/166379.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个易用的消息订阅发布系统-Pubsub.js

本文作者系360奇舞团前端开发工程师 简介 随着软件架构越来越复杂,如何有效地解决各个模块之间的通信问题变得尤为重要。一种常见的解决方案就是采用消息订阅发布机制。在这种模式下,每个模块只需要关注自己要发送或接收的消息,而不必关心其他…

07【保姆级】-GO语言的程序流程控制【if switch for while 】

之前我学过C、Java、Python语言时总结的经验: 先建立整体框架,然后再去抠细节。先Know how,然后know why。先做出来,然后再去一点点研究,才会事半功倍。适当的囫囵吞枣。因为死抠某个知识点很浪费时间的。对于GO语言&a…

pytorch之relu激活函数

目录 1、relu 2、relu6 3、leaky_relu 4、ELU 5、SELU 6、PReLU 1、relu ReLU(Rectified Linear Unit)是一种常用的神经网络激活函数,它在PyTorch中被广泛使用。ReLU函数接受一个输入值,如果该值大于零,则返回该…

力扣197. 上升的温度

【版本1】: select w2.id from Weather w1 inner join Weather w2 on w1.recordDate subdate(w2.recordDate,1) where w2.Temperature > w1.Temperature【小记】 1、遇到这种某个字段与自身相比(今天温度和昨天温度比,是温度这个字段…

已解决:云原生领域的超时挂载Bug — Kubernetes深度剖析

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

Moco框架初探

一、简介 Moco是一个搭建模拟服务器的工具,其支持API和独立运行两种方式,前者通常在junit等测试框架中使用,后者则是通过运行一个jar包开启服务。 二、用途 主要用于实现mock技术 1、后端接口开发未完成情况下,通过moco模拟接…

Maven-构建工具

一、背景 开发者编写完成源码,还需要进行编译、测试、打包、部署等一系列操作。在一些小型项目中,还可能通过手动方式进行以上操作。但是在大型项目中,难以确定以上操作的顺序,而且会耗费更高的时间成本。 1.构建工具 构建工具…

服务器的操作系统,你选择哪些?

OpenCloudOS CentOS CentOS Stream Ubuntu Debian Windows Server

特殊矩阵的压缩存储(对称矩阵,三角矩阵,三对角矩阵,稀疏矩阵)

目录 1.数组的存储结构1.—维数组2.二维数组1.行优先存储2.列优先存储 2.特殊矩阵1.对称矩阵1.行优先存储 2.三角矩阵1.上三角矩阵2.下三角矩阵 3.三对角矩阵(带状矩阵)4.稀疏矩阵 1.数组的存储结构 1.—维数组 各数组元素大小相同,且物理上…

借PVE8.0的Debian 12系统配置一下NFS服务器

正文共:1234 字 16 图,预估阅读时间:2 分钟 前面我们介绍了基于Windows Server 2012 R2创建的共享NFS(Network File System,网络文件系统)存储(Windows Server2012 R2搭建NFS服务器)…

WPF中数据绑定验证深入讲解

WPF中数据绑定验证深入讲解 WPF在用户输入时,提供了验证功能,通常验证使用以下两种方式来实现: 在数据对象中引发错误。通常是在属性设置过程中抛出异常,或者在数据类中实现INotifyDataErrorInfo或IDataErrorInfo接口。在绑定级…

机器视觉工程师注意,没有经历过公司倒闭看下文章,机器视觉公司即将要倒闭的征兆是什么?

很多机器视觉工程师没有经历过公司倒闭,谁也不想自己的公司倒闭,毕竟我们是打工人,拿固定工资的。 机器视觉公司即将要倒闭的征兆有哪些迹象​?​ 1、PM,机器视觉工程师频繁开会,甚至周末强制开会。 2.停…