Cookie 是一种可用于向网站添加持久状态的方法。多年来,虽然 cookie 的功能得到了不断的进步和发展,但却给平台留下了一些遗留问题。为了解决这些问题,浏览器(包括 Chrome、Firefox 和 Edge)正在改变行为,从而强制执行更多保护隐私的默认设置。
什么是第一方和第三方 cookie?
与当前网站的域名(即浏览器地址栏中显示的内容)相匹配的 cookie 被称为第一方 cookie。同样,来自当前网站以外域名的 cookie 被称为第三方 cookie。这不是一个绝对的标签,而是相对于用户上下文来决定的。同一个 cookie 可以是第一方的,也可以是第三方的,具体取决于用户当时所在的网站。
chrome浏览器iframe嵌套页面跨域无法获取cookie问题
系统正常iframe嵌套其他域名网站页面,起初在chrome低版本浏览器和360浏览器、火狐浏览器上是可以正常显示嵌套页面(已后端模拟登录返回页面)并支持当前iframe页面获取cookie信息发送请求。
最近升级新版chrome浏览器后,iframe页面一直没法显示出来(空白页面),页面未报错。
1、将嵌套页面的url单独窗口访问,一切正常(页面显示正常,页面请求正常获取cookie信息),排除iframe页面问题。
2、进一步尝试,将这个带有链接的iframe放在一个全新的html文件中也不能正常访问,排除当前系统的iframe加载问题。
3、刚刚新建的html文件在火狐浏览器中打开可以正常访问。
4、新版chrome浏览器访问,iframe页面显示空白。(测试机chrome浏览器版本 88.0.4324.150(正式版本) (64 位))
初步结论:新版chrome浏览器做了限制,iframe页面无法第三方cookie,嵌套此页面的网站无法共享cookie给iframe页面导致。
以上总结:在浏览器中访问的网址是:172.16.43.156,在iframe里面访问的网址是172.16.43.174,在iframe里面无法获取172.16.43.174域下的cookie,但是在浏览器中框框中访问172.16.43.174可以正常访问(可以获取到cookie)。此时来说:172.16.43.156称为第一方cookie,172.16.43.174称为第三方cookie
无法获取cookie是因为SameSite属性
Chrome 51 开始,浏览器的 Cookie 新增加了一个SameSite属性,用来防止 CSRF 攻击 和用户追踪(第三方恶意获取cookie),限制第三方 Cookie,从而减少安全风险。
SameSite属性可以设置三个值:Strict、Lax、None。
- Strict:严格,完全禁止第三方获取cookie,跨站点时,任何情况下都不会发送cookie;只有当前网页的 URL 与请求目标一致,才会带上 Cookie。这个规则过于严格,可能造成非常不好的用户体验。比如,当前网页有一个 GitHub 链接,用户点击跳转就不会带有 GitHub 的 Cookie,跳转过去总是未登陆状态。
Set-Cookie: CookieName=CookieValue; SameSite=Strict;
- Lax:防范跨站,大多数情况下禁止获取cookie,除非导航到目标网址的GET请求(链接、预加载、GET表单);设置了Strict或Lax以后,基本就杜绝了 CSRF 攻击。当然,前提是用户浏览器支持 SameSite 属性。
SameSite属性的默认SameSite=Lax 【该操作适用于2019年2月4号谷歌发布Chrome 80稳定版之后的版本】
Set-Cookie: CookieName=CookieValue; SameSite=Lax;
- None:没有限制。
必须同时设置Secure属性(Cookie 只能通过 HTTPS 协议发送),否则无效。 【该操作适用于2019年2月4号谷歌发布Chrome 80稳定版之后的版本】
Set-Cookie: widget_session=abc123; SameSite=None; Secure
开发建议:
1.禁用浏览器samsite属性或降低版本
2.保证同源策略cookie共享(保证ip或域名一直)
3.设置response.setHeader(“Set-Cookie”, “HttpOnly;Secure;SameSite=None”),需设置https证书
4.不使用cookie共享会话,使用token实现
原文:https://www.cnblogs.com/ArlenHard/articles/17104467.html
标签:浏览器,--,cookie,iframe,SameSite,Cookie,页面 From: https://www.cnblogs.com/lvjinlin/p/18336181