首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >只有跨域的框架中断,而不是来自同一来源的iframe?

只有跨域的框架中断,而不是来自同一来源的iframe?
EN

Stack Overflow用户
提问于 2010-09-29 16:45:06
回答 2查看 4.9K关注 0票数 3

这个问题以前是asked and answered正确的,但似乎没有发布解决方案。

如果一个站点有iframe,并且有人想要防止这些iframe被包含在来自不同域的框架中,那么简单的框架分解将不会有用:

代码语言:javascript
运行
AI代码解释
复制
<script>if (top != self) top.location = location</script>

然而,由于对其他域的跨框架脚本应该会产生异常,所以在iframe中似乎可以很好地工作:

代码语言:javascript
运行
AI代码解释
复制
<script>
try {
  if (window.document.domain != top.document.domain) {   // throws exception
    throw "You naughty puppy!"; // Should not ever get here, right?
  }
}
catch () {
  top.location = "/error/naughtypuppy";
}
</script>

上面的if本身应该足以防止iframe的跨域成帧。它应该只返回false或抛出异常,那么在浏览器中脚本是否可以到达throw语句?

这是否足以防止仅来自其他域的帧?

代码语言:javascript
运行
AI代码解释
复制
<script>
try {
  var bogus = top.document.domain;
}
catch () {
  top.location = "/error/naughtypuppy";
}
</script>

编辑:这里暗示了一个类似的解决方案,但不会依赖于父框架来包含框架分解代码。Detect when iframe is cross-domain, then bust out of it。本质上与“尝试访问另一个框架并在发生异常时中断”的解决方案相同。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-15 17:08:18

该代码容易受到利用"onbeforeunload“特性的某种形式的攻击。父(邪恶)页面设置了一个间隔处理程序(由于域的差异,它对您的代码是不可破坏的)和一个"onbeforeunload“处理程序。第二个处理程序只是更新一些全局变量(也是不可破坏的),以记录窗口“受到攻击”的事实,然后弹出间隔计时器(运行速度足够快,应该能够在浏览器完成对合法网址的外部窗口更新之前激活),并将window.location更新为指向某个攻击者控制的网址,该网址返回no-op204响应。浏览器会忘记您的HTTP请求,并从间隔处理程序发起的较新事务中“更新”窗口。

下面是较老的SO问题:Frame Buster Buster ... buster code needed

票数 2
EN

Stack Overflow用户

发布于 2014-10-02 21:21:04

我有一个网站,仍然有框架,我现在不能删除他们。这是我能找到的最好的解决方案:

代码语言:javascript
运行
AI代码解释
复制
<style>html { display:none }</style>
<script>
if (self == top) {
  document.documentElement.style.display = 'block';
} else {
  top.location = self.location;
}
</script> 

从这个链接:XFS 101-cross-frame-scripting-explained

基于以下网站的演示文稿:OWASP_AppSec_Research_2010_Busting_Frame_Busting_by_Rydstedt

这是一个更新的OWasp Clickjacking page

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3823875

复制
相关文章
iframe跨域安全
响应头X-Frame-Options是用来给浏览器指示允许一个页面可否在<frame>,<iframe>,<object>中展现的标记。网站可以使用此功能,来确保自己网站的内容没有被嵌套到其他网站中去,也从而避免了点击劫持 (clickjacking) 的攻击。
路过君
2020/08/28
5.9K0
跨域IFRAME 安全的数据交互方案
场景概述:站点A页面通过IFRAME嵌套站点B页面,A页面需要从B页面获取数据 站点B页面推送数据: parent.window.postMessage(data, "http://sitea"); 站点A页面接受数据: window.addEventListener("message", function (event) { if (event.origin === "http://siteb") { event.data; } }, false);
路过君
2020/06/19
2.2K0
关于iframe跨域传输
至于我为什么想写这篇文章是因为最近在项目中使用到了iframe,是的。生无可恋的又写上了一点js,可能是因为前端的人对单点登录啥的或者是页面跳转以及要和后端的逻辑 处理起来不是很熟练吧。各大网站,包括淘宝,京东,这些大网站有很多自己的产品,至于前期是怎么样的不是很清楚,网易云至少是用的iframe。参考了一些博客,至于使用 不使用iframe,我觉得能解决问题就好,而且如果考虑的多的话就考虑以后扩展以及拆分啥的,毕竟前端又不像后端这样。
Michel_Rolle
2023/07/30
2.6K0
IE中iframe跨域访问
本文主要讲述了IE浏览器中iframe跨域访问的问题以及如何解决。主要包括三个方面:1.什么是跨域,以及跨域引发的问题;2.如何解决跨域问题,分别从浏览器和服务器两个方面给出方案;3.浏览器和服务器在解决跨域问题的过程中需要注意的一些细节。
高爽
2017/12/28
4.3K0
IE中iframe跨域访问
深入剖析iframe跨域问题
HTML5学堂:本文当中我们介绍了跨域的基本知识,讲解到了跨域的相关种类,并讲解了解决跨域中的一种方法——如何使用iframe跨域。讲解了iframe跨域的基本原理与流程,并配以实战~ 利利的独白:跨域,是我们的课程中必不可少的一部分,但是我们一直都是在讲解JSONP的跨域方式,虽然也提到了iframe的跨域方式,但是由于时间因素,并没有办法放置到课程中。 本文仅仅讲明了iframe的跨域问题,想了解更多关于iframe标签的基本知识,直接发送 “iframe标签” 到 “HTML5学堂” 的微信。 什么是
HTML5学堂
2018/03/12
14.6K0
深入剖析iframe跨域问题
[js]解决postMessage跨域、跨iframe消息传递
页面中有子iframe页面 , 当子iframe接收到消息 , 比如websocket传递过来的消息时
唯一Chat
2021/03/04
3.1K0
[js]解决postMessage跨域、跨iframe消息传递
学员投稿 | iframe 解决跨域
天气降温,大家注意保暖~~~ 因为学习了腾讯课堂NEXT学院的前端进阶课程,所以打算把课程内容都总结一遍。有些都是很普通很常见的知识,但是为了巩固自己的知识面,梳理自己的知识树,所以每个知识点都会写成文章,所有文章都会放在公众号右下角的前端进阶课程总结中~~~也希望能够帮助到需要的人~~ 跨域的东西, 简直不要接触太多,网上相关内容一抓一大把,但是突然学习到一个关于前端解决跨域的方式 就是 利用 iframe  不管你有没有了解过,反正我没有 我觉得很有用并且容易忘,所以我记录下来哈哈哈 下面
腾讯NEXT学位
2019/11/18
2.5K0
学员投稿 | iframe 解决跨域
iframe跨域调用js_ajax跨域访问
本地同一浏览器访问本地HTML文件和访问服务器端HTML文件,本地Iframe没有自适应高度,而服务器端的Ifrane自适应了高度。
全栈程序员站长
2022/11/10
11K0
iframe跨域调用js_ajax跨域访问
iframe跨域应用 - 使用iframe提交表单数据
之前我们提到了iframe跨域,今天我们在原有的基础之上进行“实例”的讲解。通过iframe跨域实现表单数据的提交。如果想了解iframe跨域,可以发送“iframe跨域”到“HTML5学堂”公众号。 为何提交数据还要跨域? 在使用iframe跨域之前,可能你的脑海中就出现了这样一个问题:为何提交表单数据还需要跨域呢? 首先我们要知道,网站的数据是存放在服务器上的,而当一个网站很大型,拥有很多的数据时,通常会进行分类,然后将不同类的内容放置在不同的子域名中。 表单数据的提交模式 今天会使用到MD5的知识,因
HTML5学堂
2018/03/12
5.4K0
iframe+postMessage实现跨域通信
前言 需求背景: 最近开发管理系统,需要在本页面跳转到一个图片管理系统上传图片,上传成功后返回图片链接,然后返回管理系统,显示图片 实现思路: 上传图片时,需要在本窗口跳转到图片管理系统,并且两个系统之间要通信 考虑到两个系统是不同的端口号,存在跨域问题,这时发现HTML5新增了一个API-window.postMessage(),于是就决定用iframe结合window.postMessage()实现 在页面中嵌入一个iframe,将图片管理系统嵌入到当前的管理系统中,结合window.postMessa
pitaojin
2018/05/25
5.3K1
【JS应用】Iframe 解决跨域
跨域的东西, 简直不要接触太多,网上相关内容一抓一大把,但是突然学习到一个关于前端解决跨域的方式
神仙朱
2019/11/07
15.8K0
【JS应用】Iframe 解决跨域
puppeteer 无法获取跨域iframe内容解决
puppeteer访问的页面存在跨域iframe时,会存在无法获取iframe内容的问题。解决方法,puppeteer加上启动参数
ACK
2020/10/30
4.9K0
【HTML】iframe跨域访问问题
概述 本地同一浏览器访问本地HTML文件和访问服务器端HTML文件,本地Iframe没有自适应高度,而服务器端的Ifrane自适应了高度。 1.问题重现: Chrome 版本 41.0.2272.10
悟空聊架构
2018/05/18
4.7K0
mb增加关闭iframe跨域检查功能
那么怎么在chromium里去掉这个检查呢。经过调试,发现仅仅去掉SecurityOrigin::canAccess之类还是不行,
龙泉寺扫地僧
2019/02/20
1.7K0
详解使用postMessage解决iframe跨域通信问题
这周碰到一个让人头疼的需求:要在我的web项目中嵌入另一个第三方web项目。第一时间想到的就是用iframe了,但问题来了,我和第三方web项目是有交互的,这就违反同源策略了,处理跨域问题是最让人头疼的事之一。
用户1289394
2021/10/13
4.7K0
利用iframe和location.hash实现跨域
大家好,又见面了,我是你们的朋友全栈君。 原理是利用location.hash来进行传值。在url: http://a.com#helloword中的‘#helloworld’就是location.hash,改变hash并不会导致页面刷新,所以可以利用hash值来进行数据传递,当然数据容量是有限的。假设域名a.com下的文件cs1.html要和cnblogs.com域名下的cs2.html传递信息,cs1.html首先创建自动创建一个隐藏的iframe,iframe的src指向cnblogs.com域名下的cs2.html页面,这时的hash值可以做参数传递用。cs2.html响应请求后再将通过修改cs1.html的hash值来传递数据(由于两个页面不在同一个域下IE、Chrome不允许修改parent.location.hash的值,所以要借助于a.com域名下的一个代理iframe;Firefox可以修改)。同时在cs1.html上加一个定时器,隔一段时间来判断location.hash的值有没有变化,一点有变化则获取获取hash值。代码如下:
全栈程序员站长
2022/09/13
1K0
Golang的Gin框架解决跨域问题
首先创建一个返回gin.HandlerFunc的函数 func cors() gin.HandlerFunc { return func(c *gin.Context) { method := c.Request.Method c.Header("Access-Control-Allow-Origin", "*") c.Header("Access-Control-Allow-Headers", "Content-Type,AccessToken,X
双面人
2021/04/19
8200
Lynx:来自字节跳动的高性能跨端框架
在跨端技术高速演进的背景下,字节跳动自研了 Lynx 高性能跨端解决方案,它是一个在保持业务开发高效性上,利用极致的优化手段解决页面展示、交互性能问题,并拓展和满足更多跨平台框架的使用场景,期望实现真正的“跨平台”的高性能跨端框架。目前,Lynx 已经在包含抖音、头条、火山、西瓜在内的 10 多个字节内部 App,数十条产品线中落地,场景涵盖了卡片模式、半屏页等场景、页面模式、独立 App 等。
深度学习与Python
2021/12/10
20.1K0
利用iframe+from表单实现跨域上传文件
一、需要的材料 客户端需要一个HTML页面A其中包含一个iframe和一个form表单,一个页面B(我称之为客户端代理)里面包含对返回参数的处理; 服务端需要一个asp.net的一般处理程序用来处理上
用户1719978
2018/07/05
2.1K0
基于iframe的跨域与更新父窗体地址栏的解决方案
管理平台前端页面需要在当前前端框架结构基础上,在顶级导航中增加两个模块:首页、运维管理模块,以此接入运维平台提供的页面。在访问到内部某个页面后,希望父窗体的地址栏跟随子窗体内部src,同时更新父窗体的地址栏,再刷新页面可以保持在当前访问的页面,同时可以分享链接。
前端林子
2018/08/22
14.7K1
基于iframe的跨域与更新父窗体地址栏的解决方案

相似问题

页面顶部来自iFrame -跨域

13

设置来自iFrame的哈希值(跨域)

13

iframe跨域

11

简单的跨域iframe postMessage工作在jsfiddle中,而不是局部的。

14

Lync服务不允许来自此来源的跨域请求

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档