你不知道的cookie

提起cookie最基础的几个属性肯定是可以请求自动携带、大小、本地缓存、后端自动注入、携带cookie会引起跨域。而有几个不常用的却很少提及。

crossorigin

同源策略会引起跨域,而link、script、img、video、audio等几个标签不会引起跨域,而且,这些标签可以设置允许携带cookie的属性:

  • anonymous:它有一个默认值。它定义了一个 CORS 请求,该请求将在不传递凭证信息的情况下发送。
  • use-credentials:将发送带有凭据、cookie 和证书的 cross-origin 请求。

一般来说不用设置,不会携带,如果需要的话可以直接设置,就是没试过设置了允许携带是不是就会出现跨域了。

SameSite cookies

之前控制台经常看见这个属性,当时都没关注过,主要是应对跨站的问题。我们知道有个攻击叫做跨站请求伪造CSRF,设置这个就可以避免出现。

同站的定义是:eTLD+1相同即可。http://a.wade.com:80,wade.com就是eTLD+1。

比如下面的地址跟https://a.wade.com:80做比较:

  • https://b.wade.com:80,同站,二级域名不同
  • https://a.wade.com:80,同站,协议不同
  • https://a.wade.com:443,同站,端口不同
  • https://a.b.com:80,跨站,域不同

这就尴尬了,跨站请求伪造的条件就太容易形成了,所以chrome升级到51之后新增了SameSite属性,加强了CSRF攻击和用户追踪,有三个属性:

  • Strict:完全禁止第三方 Cookie,跨站点时,任何情况下都不会发送 Cookie。
  • Lax:允许部分第三方请求携带 Cookie。链接,预加载请求,GET 表单,Ajax、iframe、img都不允许携带
  • None:都可以携带,但是要设置Secure,只能是https协议下生效。

现在默认的SameSite是Lax,一些旧网站控制台会有警告也是因为新浏览器导致的:

A parser-blocking, cross site (i.e. different eTLD+1) script

A cookie associated with a cross-site resource at was set without the SameSite attribute.

欢迎关注个人订阅号 coding个人笔记

### 如何在浏览器中查看和管理 Cookie #### Chrome 浏览器中的操作方法 对于 Google Chrome 用户来说,想要查看和管理 Cookies 可以按照如下方式操作。打开 Chrome 的设置页面,导航到“隐私和安全”部分下的“清除浏览数据”,这里可以选择仅清除 Cookies 和其他站点数据或者自定义时间范围内的所有浏览记录等内容[^3]。 另外一种更细致的操作是在地址栏输入 `chrome://settings/siteData` 并回车进入专门针对网站数据(包括 Cookies)的管理界面,在这个界面上能具体看到各个网站存放在本地的数据详情,并支持单独删除某个站点的数据或是批量处理多条目。 #### Edge 浏览器中的操作方法 Microsoft Edge 提供了一个直观的方式让用户管理和调整其隐私选项。前往“设置”> “隐私、搜索和服务”的路径下找到有关于 Cookies 设置的部分。在此处仅能看到当前保存了多少来自同源的 Cookies ,还可以设定阻止某些类型的追踪技术以及手动添加例外情况来允许特定站点写入 Cookies 到设备上[^2]。 #### Firefox 浏览器中的操作方法 Mozilla Firefox 同样具备强大的内置工具用来保护个人隐私并给予用户充分的选择权去决定如何对待接收到的网络请求携带的信息片段即 Cookies 。要访问这些功能只需点击右上方菜单按钮 -> 更多 (三条横线图标) -> 隐私与安全;接着向下滚动直到看见增强型跟踪防护板块下面有关 cookies 的配置项即可进行相应修改。 #### Safari 浏览器中的操作方法 Apple 的 Safari 浏览器也提供了方便快捷的方法来进行此类维护工作。当处于 macOS 环境时,可以从屏幕顶部菜单栏选择 Safari 菜单项,之后依次点选偏好设置... > 隐私标签页。在这里可以执行诸如开启/关闭自动阻止所有的 cookie 功能、审查已有的 cookie 存储状况甚至一键清理掉选定的一批关联文件等动作[^4]。 ```python # Python 示例代码展示如何模拟获取浏览器cookies(仅为示意) import browser_cookie3 as bc for cookie in bc.chrome(domain_name='example.com'): print(f'{cookie.name}={cookie.value}') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值