iframe 嵌入页面?才不是那么轻轻松松!

简介: iframe 嵌入页面?才不是那么轻轻松松!

背景介绍


故事是这样的,前一阵接到一个任务,一个看似很平常的任务,我和一个实习生同学开开心心的完成并等待联调。


可是事与愿违,服务端同学和对接方没有谈拢,他们就想到一个鬼点子,用 iframe 嵌入他们的页面,以实现我们的需求。可是在调研的过程中我发现了以下问题:


  • 部分页面无法嵌入
  • 无法通过设置 cookie 绕过该系统的登陆


可能这个问题在各位前辈面前就是常见问题,但是我也去查询了问题出现的原因。于是,就有了这篇文章。


踩坑纪实


X-Frame-Options


部分页面无法嵌入的原因

参考:developer.mozilla.org/zh-CN/docs/…


The X-Frame-OptionsHTTP 响应头是用来给浏览器指示允许一个页面可否在 <frame>, <iframe>, <embed> 或者 <object> 中展现的标记。站点可以通过确保网站没有被嵌入到别人的站点里面,从而避免 clickjacking 攻击。


X-Frame-Options 有三个可能的值:


X-Frame-Options: deny
X-Frame-Options: sameorigin
X-Frame-Options: allow-from https://example.com/


deny

  • 表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。

sameorigin

  • 表示该页面可以在相同域名页面的 frame 中展示。

allow-from uri

  • 表示该页面可以在指定来源的 frame 中展示。

配置方法

  • Apache
  • nginx
  • IIS
  • HAProxy
  • Express

具体方法请参考上方 mdn 链接


SameSite cookies


无法通过设置 cookie 绕过该系统的登陆的原因


参考:developer.mozilla.org/zh-CN/docs/…


SameSite 是HTTP响应头 Set-Cookie 的属性之一。它允许您声明该Cookie是否仅限于第一方或者同一站点上下文。

SameSite 接受下面三个值:

Lax

  • Cookies允许与顶级导航一起发送,并将与第三方网站发起的GET请求一起发送。这是浏览器中的默认值。

Strict

  • Cookies只会在第一方上下文中发送,不会与第三方网站发起的请求一起发送。

None

  • Cookie将在所有上下文中发送,即允许跨域发送。


以前 None 是默认值,但最近的浏览器版本将 Lax 作为默认值,以便对某些类型的跨站请求伪造 (CSRF) 攻击具有相当强的防御能力。

使用 None 时,需在最新的浏览器版本中使用 Secure 属性。

Chrome76版本更新:拒绝不安全的 samesite=none 的 cookie


结束语


网络异常,图片无法展示
|


工作中遇到问题在所难免,也请各位做好总结,这样才能进步~


✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨

弓背霞明剑照霜,秋风走马出咸阳。
未收天子河湟地,不拟回头望故乡。

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨

相关文章
|
Rust 安全 前端开发
你应该知晓的Rust Web 框架(一)
你应该知晓的Rust Web 框架
1440 1
|
11月前
|
人工智能 运维 Cloud Native
一起聊聊大规模 AI Agent 部署与运维实战
诚挚地邀请您参加将于 11 月 28 日(周五)下午,在北京阿里中心举办的 【企业 AI 原生应用架构升级】主题研讨会。
|
5月前
|
数据采集 边缘计算 编解码
解析!CNC机床数据采集的几种方案优缺点对比
本文对比分析CNC机床五种主流数据采集方案:原生协议直连、PLC/IO信号、宏变量指令、外挂智能网关及屏幕图像识别,剖析其优劣与适用场景,助力企业破解兼容性差、成本高、效率低等痛点,构建高效智能的数据采集体系。
|
8月前
|
Prometheus 监控 网络协议
Go + gRPC 高性能调优实战指南
本文详解7个gRPC性能优化技巧:连接复用、KeepAlive调优、智能压缩、Protobuf对象池、并发流控制、字段编号优化及监控闭环。实测QPS从3k提升至15k+,延迟降低60%,内存分配减半,助你将gRPC从“限速60”飙到“时速120”。
535 3
|
11月前
|
运维 安全 数据可视化
Doris MCP Server v0.6.0 正式发布
Doris MCP Server v0.6.0 重磅发布!全面升级为企业级认证与数据库管理系统,支持多租户隔离、Token绑定配置、热重载免重启、Web可视化管理。增强安全防护、连接池性能飞跃,助力多租户SaaS与高可用生产环境,平滑兼容旧版本,开启数据管理新时代。
536 2
|
机器学习/深度学习 数据采集 搜索推荐
Python基于深度学习算法实现图书推荐系统项目实战
Python基于深度学习算法实现图书推荐系统项目实战
顺风车抢单脚本,顺风车抢单永久免费版,网约车抢单插件软件
这是一个基于Python和Selenium的自动化脚本,用于检测订单页面中的距离和价格,并在符合条件时自动点击接受订单。脚本具备异常处理
|
缓存 运维 Java
Java静态代码块深度剖析:机制、特性与最佳实践
在Java中,静态代码块(或称静态初始化块)是指类中定义的一个或多个`static { ... }`结构。其主要功能在于初始化类级别的数据,例如静态变量的初始化或执行仅需运行一次的初始化逻辑。
642 4
|
Java API Spring
Java实现异步编程的几种方式
通过本文的介绍,我们了解了在Java中实现异步编程的几种常用方式。每种方法都有其优点和适用场景,具体选择哪种方式应根据实际需求和场景决定。如果任务较简单,可以使用 `Thread`或 `ExecutorService`;如果需要处理复杂的异步流程,可以考虑使用 `CompletableFuture`或Reactive编程框架。希望本文对您理解和实现Java异步编程有所帮助。
767 1
|
存储 缓存 算法
IM技术干货:假如你来设计微信的群聊,你该怎么设计?
微信背后的这个IM群聊系统到底是如何实现的呢?这个问题一直困扰着,于是我决定深入了解一下,看看微信的群聊系统背后的设计是怎样的。
930 1

热门文章

最新文章