首页 > 其他分享 >cookie--SameSite说明

cookie--SameSite说明

时间:2024-08-01 10:54:00浏览次数:13  
标签:浏览器 -- cookie iframe SameSite Cookie 页面

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

相关文章

  • 用户长时间无操作返回登录页
    main.ts1.定义定时器consttimeout=3000;lettimer:any;constresetTimer=()=>{if(timer)clearTimeout(timer);timer=setTimeout(()=>{showLogoutWarning();},timeout);};2.监听事件,触发定时器constevents=["load",//资源加载完成......
  • 信步漫谈之YourKit监控工具—远程监控步骤
    一、准备环境1、被监控服务器(安装YourKit客户端)2、监控服务器(安装YourKit服务端)二、准备材料1、yjp-11.0.9.exe:YourKit安装主程序2、yourkit_keygen.rar:YourKit破解程序(没有安装程序和破解程序的,自己上网找,我只是写写,哈哈哈)三、YourKit客户端安装与启动1、拷贝yjp-11......
  • Linux非常强大的一个命令find
    find命令是Linux和Unix系统中非常强大的一个命令,用于在目录树中搜索文件,并执行指定的操作。它可以基于各种条件来搜索文件,比如文件名、文件类型、大小、修改时间等。基本语法find[搜索路径][选项][操作]搜索路径:指定find命令开始搜索的目录路径。如果省略,则默......
  • 服务器LSI9361 RAID卡更换为BCM9560 RAID卡重启系统蓝屏解决方法
    一、问题现象服务器配LSI9361RAID卡,安装的系统为WindowsServer2022、2019、2016时。当LSI9361RAID卡故障后,使用BCM9560RAID卡替代后,无法进入系统后。报错提示如下图:二、解决方法 2.1 WindowsServer2022系统1、服务器启动时按F8键,选择“安全模式”进入系统。2......
  • 信步漫谈之OpenEuler——介绍与安装
    目标OpenEuler系统安装配置OpenEuler图形化界面安装OpenEuler的远程连接1资源官方网站:https://openeuler.org/代码管理地址:https://gitee.com/openeulerISO下载地址:https://www.openeuler.org/zh/download/文档地址:https://docs.openeuler.org/zh/2OpenEuler是什......
  • 【漏洞复现】用友时空KSOA PrintZPFB.jsp SQL注入漏洞
    0x01产品简介用友时空KSOA是建立在SOA理念指导下研发的新一代产品,是根据流通企业前沿的IT需求推出的统一的IT基础架构,它可以让流通企业各个时期建立的IT系统之间彼此轻松对话。0x02漏洞概述用友时空KSOA系统PrintZPFB.jsp接口处存在SQL注入漏洞,未经身份验证的......
  • NVIDIA GPU MIG多实例&Multi-Instance GPU-中文用户指南
    目录第一章、介绍第二章、支持的GPU卡第三章、支持的配置 第四章、虚拟化 第五章、概念 5.1术语5.2 分区(Partitioning) 5.3 CUDA并发机制第六章、部署考虑事项6.2 应用考虑事项 第七章、MIG设备名称7.1  设备枚举7.2 CUDA设备枚举第八章、支持的MIG......
  • 信步漫谈之微信小程序——HelloWorld
    目录目标1资源2程序目录说明3第一个HelloWorld程序4真机调试参考资料(感谢)目标微信小程序开发环境sayhelloworld1资源微信官方文档:https://developers.weixin.qq.com/doc/微信开发者工具下载:https://developers.weixin.qq.com/miniprogram/dev/devtools/downloa......
  • PDF解析,还能做得更好
    随着大模型文档智能应用逐渐步入正轨,文档解析类产品成为其中重要的一环。文档解析工具能够“唤醒”沉睡在PDF文件中的知识,将其转化为机器能够识别、读取的信息,将可用数据从txt、csv格式扩展到大批量的电子档、扫描档文件,为数据处理、大模型训练、RAG系统开发提供优质的“燃料”。......
  • 信步漫谈之JDK——环境变量配置
    Windows上配置JDK环境变量安装jdk(以jdk1.6.0_45为例)计算机→属性→高级系统设置→高级→环境变量新建JAVA_HOME变量:C:\ProgramFiles(x86)\Java\jdk1.6.0_45编辑Path变量,末尾添加:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;新建CLASSPATH变量:.;%JAVA_HOME%\lib;%JAVA_......