SameSite Cookie的解释
SameSite Cookie机制本意是为了减少网络请求包,设想下,b.com网站展示a.com下的图片,b站每向a请求一张图片,都会携带上a域下的cookie,而这些cookie对于请求来说毫无意义,无意中增加请求包大小
SameSite有三个属性Lax, Strict, None
Lax:b站上通过超链接访问a站,会携带a站cookie。b站通过img标签等跨越请求a站时,不会携带cookie,设置的cookie也不会起作用
Strict:b站上通过超链接访问a站,不会携带a站cookie。b站通过img标签等跨域请求a站时,不会携带cookie,设置的cookie也不会起作用
None:b站上通过超链接访问a站,会携带a站cookie。b站通过img标签等跨域请求a站时,会携带cookie,设置的cookie起作用
Firefox v83默认SameSite=None,SameSite=None时,还必须加上Secure属性cookie才会被浏览器接受
Chrome v87默认SameSite=Lax,该配置对CSRF有相当大的防御力
对CSRF漏洞的影响
1、get类型的csrf漏洞,原本可以通过img/script等标签完成攻击,但由于SameSite=Lax属性,攻击无法生效,只能通过访问超链接方式攻击
2、post类型的csrf漏洞,ajax可以完成content-type为application/x-www-form-urlencoded的csrf攻击,form表单(target=subiframe,隐藏iframe)也可以完成攻击。由于SameSite=Lax属性,只有通过form表单提交到新页面完成攻击
SameSite能不能抵御攻击?
1、浏览器SameSite默认属性并不能完全防止CSRF攻击,超链接访问、form表单提交到新页面等攻击方式依然有效
2、敏感业务可以设置cookie属性SameSite=Strict,防止来自站外攻击
参考
https://web.dev/samesite-cookies-explained/
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Set-Cookie/SameSite
=========更新==============
除了CSRF攻击,CORS漏洞也变得很鸡肋(本来Access-Control-Allow-Origin=any和Access-Control-Allow-Credentials=true可以轻松劫持用户会话)参考另一篇文章https://blog.csdn.net/haoren_xhf/article/details/80050311