SameSite是什么

子凡 2020-08-31 00:59:46
问答

SameSite是Cookie中的一个属性用来限制第三方Cookie,从而减少安全风险。Chrome 51 开始,浏览器的Cookie新增加了一个SameSite属性,用来防止CSRF攻击和用户追踪。

Chrome 51 开始,浏览器的 Cookie 新增加了一个 SameSite 属性,用来防止 CSRF 攻击和用户追踪。Cookie 的 SameSite 属性用来限制第三方 Cookie,从而减少安全风险。

SameSite

Web 前端安全,从影响面看排名前两位的就是 XSS 和 CSRF,其基本原理都是攻破了浏览器同源策略的限制。CSRF 漏洞目前的措施一般是验证 referer 或者是用安全 token。而 google 则希望从标准层面去根治这个排名第二的前端安全漏洞。其方案就是给 Cookie 新增一个属性,用这个属性来控制什么情况下可以发送 Cookie,这个属性就是我们今天要讨论的 SameSite 属性。

SameSite 属性有三个枚举值,分别是 strict/lax/none。Strict 最为严格,完全禁止第三方 Cookie,跨站点时,任何情况下都不会发送 Cookie。换言之,只有当前网页的 URL 与请求目标一致,才会带上 Cookie。Lax 规则稍稍放宽,大多数情况也是不发送第三方 Cookie,但是导航到目标网址的 Get 请求除外。

设置了 Strict 或 Lax 以后,基本就杜绝了 CSRF 攻击。当然,前提是用户浏览器支持 SameSite 属性。Chrome 计划将 Lax 变为默认设置。这时,网站可以选择显式关闭 SameSite 属性,将其设为 None。不过,前提是必须同时设置 Secure 属性(Cookie 只能通过 HTTPS 协议发送),否则无效。

对于依赖三方 Cookie 的业务,比如登录组件,商业化组件等,需要做技术改造来适应 Google 的这个调整。就像对抗疫情一样,Web 安全治理需要整个行业技术生态的支持,从这个角度看,我们互联网技术人应该积极响应和支持 Google 的这个策略。

稍微尴尬的是有些企业还没有这个觉悟,比如我们常用的 Java Web 开发底层框架,Servlet 的 Cookie 类还没有支持这个新的属性,需要我们自己去实现。希望 Google 这一举动能反向驱动整个行业生态,共同来根治 CSRF 漏洞。可以预见 3-5 年以后,互联网的江湖将不再存在 CSRF 这个漏洞了。

0个人收藏 收藏

评论交流

泪雪默认头像 请「登录」后参与评论
  1. 加载中..