浏览器默认设置SameSite属性的作用

浏览器默认设置SameSite属性的作用


前言

Google 在2020年2月4号发布的 Chrome 80 版本中默认屏蔽所有第三方 Cookie,即默认为所有 Cookie 加上 SameSite=Lax 属性,并且拒绝非Secure的Cookie设为 SameSite=None;SameSite的作用就是防止跨域传送cookie,从而防止 CSRF 攻击和用户追踪。


一、CSRF 攻击是什么

CSRF(Cross-site request forgery),中文名称:跨站请求伪造

CSRF攻击往往通过盗取你的 Cookie 信息,而Cookie 往往用来存储用户的身份信息,在盗取完你的 Cookie 信息后;恶意网站可以设法伪造带有正确 Cookie 的 HTTP 请求,这就是 CSRF 攻击。

简单来说就是:攻击者盗用了你的身份,以你的名义发送恶意请求。

一个典型的CSRF攻击有着如下的流程:

  1. 当你(受害者)登陆了某个网站AAA.com,验证身份通过后,服务器发来了一个Cookie以确定受害者的身份;于是受害者在本地生成了Cookie。
  2. 在这之后,受害者在未登出AAA.com的情况下,又访问了另一个危险网站BBB.com
  3. BBB.com此时会想要访问AAA.com,于是发送请求,进行想要进行的操作。此时的浏览器会默认携带AAA.com的Cookie。
  4. AAA.com接收到请求后,对请求进行验证,通过其请求中携带AAA.com的Cookie确认是你的身份凭证,误以为是受害者发送的请求。于是就接受了该请求进行相应操作
  5. 至此,CSRF攻击完成,攻击者在受害者不知情的情况下,冒充受害者,让AAA.com执行了自己定义的操作。

CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账…造成的问题包括:个人隐私泄露以及财产安全。


二、SameSite 属性

为了防止CSRF这种攻击行为,在chrome80版本以后默认把cookie的SameSite属性设置为Lax,以此来对第三方cookie做一些限制,这样就能大大地降低被CSRF攻击的风险了。

通过设置Cookie 的SameSite属性用来限制第三方 Cookie,从而减少安全风险。

SameSite可以设置三个值。

  • Strict
  • Lax
  • None
  1. Strict
    Strict最为严格,完全禁止第三方 Cookie,跨站点时,任何情况下都不会发送 Cookie。换言之,只有当前网页的 URL 与请求目标一致,才会带上 Cookie。

  2. Lax
    Lax规则稍稍放宽,大多数情况也是不发送第三方 Cookie,但是导航到目标网址的 Get 请求除外。

  3. None
    Chrome 计划将Lax变为默认设置。这时,网站可以选择显式关闭SameSite属性,将其设为None。
    不过,前提是必须同时设置Secure属性(Cookie 只能通过 HTTPS 协议发送),否则无效。

代码如下(示例):

下面的设置无效。

Set-Cookie: widget_session=abc123; SameSite=None

下面的设置有效。

Set-Cookie: widget_session=abc123; SameSite=None; Secure

参考文献:

  1. 阮一峰的《Cookie 的 SameSite 属性》。
  2. gjt19970425的《浏览器的SameSite策略
  3. hyddd的《浅谈CSRF攻击方式
本文简单介绍为何chrome要做此次SameSite默认策略的升级,然后简单介绍了CSRF攻击与SameSite对应的三个属性
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值