具有独立分区状态的 Cookie(CHIPS)

一、Partitioned属性

    Parttitioned属性在2023年中期被引入主流浏览器。 

 允许开发人员选择将 cookie 放入分区存储中,每个顶级站点都有一个单独的 cookie 存储空间。

🎈通常情况下:

    1. 一个用户访问 https://site-a.example,该站点嵌入了 https://3rd-party.example 的内容。https://3rd-party.example 在用户设备上设置了 cookie。

    2.该用户访问 https://site-b.example,该站点同样嵌入了 https://3rd-party.example 的内容。https://3rd-party.example 的新实例仍可以访问用户在上一页时设置的 cookie。  

🎈设置了Partitioned:

    Set-Cookie: __Host-example=34d8g; SameSite=None; Secure; Path=/; Partitioned;

    1.一个用户访问 https://site-a.example,该站点嵌入了 https://3rd-party.example 的内容,https://3rd-party.example 在用户设备上使用 Partitioned 设置了 cookie。意味着网站所有者选择使用 CHIPS。
    2.存储 cookie 的键现在为 {("https://site-a.example"), ("3rd-party.example")}。
    3.当用户访问 https://site-b.example,该站点也嵌入了 https://3rd-party.example,因为分区键不一致,所以新嵌入的实例不再能够访问前一页面设置的 cookie。

只需要在SetCookie的时候加入Partitioned即可,不需要指定任何域名,浏览器会自动识别。

即使samesite设置为None也不会在这种情况下携带Cookie

二、示例

如果在不嵌入的情况下通过导航栏访问,设置了Partitioned会是什么情况呢?

🎈未设置Partitioned的网站A:

🎈访问网站A的/set-cookie路由模拟登录:

    可以看到Cookie被设置,并且Partition Key Site为空

🎈恶意站点:

    模拟嵌套网站A

    iframe和fetch都会携带cookie

设置Partitioned并重复上述登录步骤

    可以看到Partition Key Site设置为当前导航栏站点的二级域名

🎈恶意站点:

    模拟嵌套网站A

可以发现当站点A的Cookie设置了Partition Key Site,其他任何二级域名不是Partition Key Site值的网站都无法通过任何嵌套的方式套网站A并携带A的Cookie,即使SameSite是None。

该属性我认为可以防止大部分情况的CSRF攻击,但是特殊情况除外比如A站点子域名收到了攻击,利用子域名对二级域名实现CSRF攻击。所以还是得靠Samesite

三、浏览器兼容性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Oxo Security

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值