问题标签 [framebusting]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Frame Buster Buster ...需要破坏者代码
假设您不希望其他网站将您的网站“框定”在<iframe>
:
因此,您将反框架、框架破坏 JavaScript 插入到所有页面中:
优秀的!现在,您会自动“破坏”或突破任何包含 iframe 的内容。除了一个小问题。
事实证明,您的帧破坏代码可以被破坏,如下所示:
此代码执行以下操作:
- 每次浏览器尝试通过
window.onbeforeunload
事件处理程序离开当前页面时,计数器都会递增 - 通过 设置每毫秒触发一次的计时器,
setInterval()
如果它看到计数器增加,则将当前位置更改为攻击者控制的服务器 - 该服务器提供带有 HTTP 状态代码204的页面,这不会导致浏览器在任何地方导航
我的问题是——这更像是一个 JavaScript 难题,而不是一个实际问题——你如何才能打败破坏框架的破坏者?
我有一些想法,但在我的测试中没有任何效果:
- 尝试通过清除
onbeforeunload
事件onbeforeunload = null
无效 - 添加
alert()
停止进程让用户知道它正在发生,但不会以任何方式干扰代码;单击“确定”让破坏继续正常进行 - 我想不出任何清除
setInterval()
计时器的方法
我不是一个 JavaScript 程序员,所以这是我对你的挑战:嘿,破坏者,你能破坏框架破坏破坏者吗?
javascript - 通过访问页面源来防止框架破坏
所以我们在 iframe 中加载页面。此子页面是从与父页面位于同一域的缓存中加载的。但是,外部资产不会在本地缓存,而是从外部站点加载 - 包括 javascript。在一个站点中,我们有框架破坏代码:
现在我知道我们可以使用coderr的解决方案,但我不确定它的含义/连锁问题是什么。鉴于我们可以访问缓存的子页面,我想知道是否可以向子页面添加任何内容,以便覆盖任何方法或值,以便将 framebusting 呈现为 null。例如,在<head>
我尝试添加这个的孩子中:
和
结果非常可怕(第一个示例中的无限嵌套,第二个示例中的浏览器完全崩溃)。
对于我们可以添加到孩子以消除框架破坏的代码有什么建议吗?
否则,我们将不得不缓存 js 并解析/替换 framebusting 脚本。
谢谢
R。
请 - 这是合法的!
javascript - 如果网站试图从框架中逃脱,如何停止加载网站
所以我知道有很多网站试图打破框架(框架破坏),然后有整个循环的“破坏框架破坏者”和“破坏框架破坏者破坏者”等。有没有办法预测是否网站会尝试突破你的框架吗?我希望我的程序尝试将站点加载到框架中,如果它试图突破,只需放弃尝试并停止加载框架。这是我之前尝试过的:
不幸的是,即使删除了 iframe,它仍然会重定向到原始站点?我怎样才能删除框架并完全放弃加载他们的网站的尝试,这样就不会发生重定向?
iframe - PayPal 与基于 iframe 的购物车的集成
我们使用 PayPal 的 Payments Pro NVP API 在我们的网站上提供无缝的信用卡和贝宝处理。我们创建了一个基于 iframe 的购物车小部件,我们的客户将其放到他们的网站上,这样他们的用户就可以购买商品并通过我们的 Paypal 帐户付款。
虽然信用卡交易工作正常,但当用户尝试使用其 PayPal 帐户付款时,我们会遇到问题。该 API 在单击 PayPal 徽标时使用重定向,但随后 PayPal 的代码似乎运行了一个框架破坏脚本并且交易无法继续。
我正在寻求有关如何处理希望通过 iframe 使用 PayPal 付款的用户的建议或示例代码。一种选择是弹出一个新窗口,但由于用户可以在该窗口和包含 iframe 的窗口之间切换,并且可能使购物车与 PayPal 窗口显示的内容不同步,因此它会使设计面临问题。
javascript - Frame Busting buster 不完全适用于 IE
我一直在研究 Frame busting buster(名字里有什么,呵呵),它让我的用户留在我的页面上并打开一个带有目标 URL 的新窗口。我正在使用 Lightbox 脚本来显示 iframe,这就是我正在做的事情:
1) 为所有 .lightbox 点击添加了一个事件,fe:
2)增加了一个框架破坏克星:
3)修改了框架破坏破坏代码以满足我的需求,它们是:
- 检测 iframe 是否要更改 window.top.location
- 如果是这样,请使用 204 服务器响应防止这种情况发生
- 打开一个新页面:
window.open( $('#redirectURL', '_blank' );
- 关闭灯箱:
$('.jquery-lightbox-button-close').click();
到目前为止,这就是我想出的:
// 编辑:Before I forget, 'nocontent.php' is a file that returns a 204 header
对于 Firefox,它就像我编写的那样,如果在 window.top.location 中检测到更改,它会打开一个新的框架/页面并阻止 iframe 重新加载顶部位置并将其四舍五入,它会关闭 jQuery 灯箱。
Safari/Chrome 的行为类似,它们会打开一个新的浏览器屏幕 ( not sure if theres an option to say target="_newtab" or something?
)。唯一不好的是他们并没有真正显示弹出窗口被阻止的消息,但我可以通过在我的网站上显示一个带有页面链接的弹出气球来解决这个问题。
Internet Explorer 真是令人震惊,是唯一剩下的害群之马。IE 不会打开新的弹出窗口,也不会阻止 iFrame 重置的 window.top.location,而是继续将整个页面刷新到“#targetURL”。它与默认破坏代码相同。所以这不是因为我的一些编辑。
任何能够在我的代码中发现错误的人?
此外,我需要进行一些修改,以查看请求是由 iframe 还是由用户本身发出的,因为现在用户确实没有选择通过更改工具栏中的地址或单击来离开我的页面链接,这并不是真正需要的大声笑。
提前致谢。
javascript - 如果检测到帧破坏,则重定向
我正在显示带有我网站标题的出站链接,我的一些数据提供商有框架破坏者。
我想要完成的是;如果没有框架破坏(内容加载成功),则显示框架,否则如果框架破坏到位,只需使用框架源刷新整个页面?
我看过一些关于它的帖子,并且大部分代码都需要用户交互,例如:
效果很好,但需要刷新或后退按钮,是否可以实时执行此操作而无需单击任何内容?
我对所有替代方案持开放态度,无论是 JavaScript、Ajax 还是 PHP。
iframe - Framebuster 异常
我有一个关于编写框架破坏者破坏者的问题。我已经阅读了Frame Buster Buster ...需要破坏代码,但我需要进行额外的调整。
我在 [ http://my_domain.c0m/blog]上的博客中的内容正在显示在另一个显示三个“视图”的站点上。一个视图是一个提要,并没有特别困扰我。另外两个打扰我,我想打破两个。我还想允许具有框架权限的域例外。
在一个视图中,我的博客顶部的 html 顶部的内容似乎首先被复制以创建一个“快照”[ http://the_other_domain.c0m/copy_of_blog] ,然后该副本被框在 [ http: //the_other_domain.c0m/ ]。因此,在这种情况下,“子”副本都托管在 [ http://the_other_domain.c0m/]上。谷歌翻译做了类似的事情——但我觉得这没问题。所以,我想打破这个框架,同时也允许谷歌和那些已经复制到他们的电脑并希望在可能框架的实用程序中查看的人例外。
在另一个视图中,我网站的内容似乎被框起来了。所以在这种情况下 [ http://my_domain.c0m/blog_post]是由 [ http://the_other_domain.c0m/]框起来的。我想摆脱这个框架。但是,我的困难在于,我无法弄清楚如何做到这一点,同时将谷歌翻译或个人电脑用户框架的例外情况保留在家里。
到目前为止我的解决方案(我对javascript并不是特别熟悉。所以,请不要对冗余和缺乏知识笑得太厉害):
我能够使用以下方法破坏第一帧:
我知道这是低效的。但它有效并实现了我的目标,即 a)我的法国读者要求的 googlecontent 翻译和 b)用户在下载到他们的电脑的实用程序中构建的情况(我认为 uri 以“文件”开头:"。
现在的困难是:这不适用于托管在我的域中的内容在另一个域中构建的视图。我相信我已经将问题归结为 var topWindow = String(top.location) 不允许在我的子窗口中出现。原则上,这会起作用:
然而,我认为它搞砸了谷歌翻译的使用,它使用一个顶部框架来保存他们对我的内容的翻译也托管在 [ http://translate.google.com]。我怀疑它同样会搞砸可能会在某人的电脑上显示本地副本的阅读器,如果该副本显示在框架中。
如果有人可以指导我找到一个解决方案,我可以实施以打破两个框架,同时允许我的例外
顺便说一句:看起来有问题的网站正在使用 framebuster。我四处寻找,在他们的 /static/common.js?1345250291 代码中找到了这个:
这在一些特别密集的javascript中很深。无论它做什么,它似乎都不会影响我在我的内容被复制并托管在 [ http://the_other_domain.c0m/]的情况下破坏框架的能力。我还没有完全探索它是否破坏了简单的框架破坏器,因为早些时候我最近才意识到在与父框架具有不同域的子框架中禁止使用“var topWindow = String(top.location)”。
无论是否存在帧破坏者,我都希望在这里获得解决方案方面的帮助。我知道,如果一个网站现在以这种方式构建我的内容,那么令人讨厌的技术流行起来只是时间问题,我想在解决方案中编写代码,优雅地破坏这两种方法,同时为自己提供异常。提前致谢。
iframe - 在 iframe 中显示 Salesforce 登录表单
我无法在 IFrame中显示https://login.salesforce.com 。
我在我的应用程序和销售人员之间使用 OAuth。为了更好的用户体验,我不希望用户离开我的应用程序的主窗口。
有什么建议么?
演示问题的示例 - http://jsfiddle.net/ngWxY/
iframe - 在 iFrame 中打开站点,避免 Frame Busting
我正在尝试在 iFrame 中打开一些站点,该站点以弹出窗口的形式打开。有些网站不允许自己在 iFrame(Frame Busting)中打开。
我已经搜索过这个。我也有一些解决方案,比如
beforeunload 对我不起作用,因为即使在我的网站内导航它也会运行
我也试过
上面也不起作用,它会重定向到在 iFrame 中打开的 url。
那么是否有任何解决方案可以在 IFrame 中打开站点(具有 Frame Buster)。
问候,萨加尔·乔希
javascript - 最新的framebusting javascript?
我需要为我的 Web 应用程序添加一个基于 javascript 的 framebuster,以帮助防止不支持 X-FRAME-OPTIONS 的旧版浏览器的点击劫持(或跨帧脚本)攻击。
在网上搜索后,我发现目前似乎有两种方法,如下所示。作为一个完整的 javascript 新手,我更喜欢方法 1 的简单性。
我的问题是- 这两种方法目前仍然有效还是其中任何一种已经“失败”?
编辑:将我的问题更改为询问这两种方法,而不仅仅是方法 1。
方法 1(来自http://en.wikipedia.org/wiki/Framekiller#Modern_framekiller):
非常感谢。