首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理iframe安全问题(例如:“X帧选项”到“SAMEORIGIN”)

处理iframe安全问题(例如:“X帧选项”到“SAMEORIGIN”)
EN

Stack Overflow用户
提问于 2013-05-06 16:30:47
回答 1查看 2.5K关注 0票数 2

在我的申请,我有一个iframe,可以打开任何网页(99%的时间,同一来源)。但是用户可以点击iframe内部的链接并访问外部网站。我设法检测到该网站是否具有相同的来源,但对"https://www.google.ca/“这样的网站的请求会引发以下错误:

'https://www.google.ca/‘拒绝在帧中显示,因为它将“X帧选项”设置为“SAMEORIGIN”.

我的iframe绑定了一个beforeunload、onerror和onload事件,但是我无法通过事件对象来处理这个安全问题。

EN

回答 1

Stack Overflow用户

发布于 2015-09-11 11:24:58

有同样的问题,将第三方页面加载到我的iframe中,其中一些页面被X框架选项阻塞,而这些选项没有包含在HTML中。

注意:在CHROME,iPhone,MozillaAndroid4.4.2中工作,但不工作在FireFox上。

如果您希望在新窗口中打开这些页面,我就是这样管理它的。也许对其他人有用的东西,为这个特殊的情况寻找解决方案。

PHP ( get_headers )对他们中的大多数人都很好,但我几乎没有把X框架选项直接输入到header (自动包含),所以get_headers失败了,浏览器收到了X框架选项拒绝的负载: your_guest_url不允许跨源帧。

我不得不在我的第一个页面上添加链接,让用户在新窗口中打开有问题的页面,点击它并使用javascript、loading图标和setTimeout()创建中间页面。

firstpage.php与“iframe”和“a”在“iframe”下面

代码语言:javascript
复制
<?php
foreach(get_headers("http://".$_REQUEST["address"]) as $v) {
    if($v == "X-Frame-Options: SAMEORIGIN" || $v == "X-Frame-Options: DENY") {
    header("location: http://".$_REQUEST["address"]);
    die();
    }
}
?>

<iframe id="iframe-id" src="secondpage.php"></iframe>
<a href=your_guest_url>go to your_guest_url</a>

<script language='javascript'>
setTimeout(function() {
document.getElementById('iframe-id').src = 'your_guest_url';
},500);
</script>

加载到iframe中的secondpage.php

代码语言:javascript
复制
<div class="loading-info">
    <div id="loading-info" class="loading-info-content">
            <i class="fa fa-3x fa-spinner fa-pulse"></i>
    </div>
</div>

<script>
setTimeout(function() {
document.getElementById("loading-info").innerHTML = "<p'>USE LINK BELOW IFRAME</p>";
},5000);
</script>

没有“隐藏”X框架选项的页面在500 so后通过javascript加载到iframe,有问题的页面不会加载,因此第二页停留在iframe中并执行javascript setTimeout();。

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

https://stackoverflow.com/questions/16403061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档