搜索
查看: 434|回复: 1

[网站] 如何阻止 iframe里引用的网页自动跳转

[复制链接]
发表于 2019-12-16 09:05:32 | 显示全部楼层 |阅读模式

  今天在做网页发现谷歌地图不能使用了,然后从网上找了一段代码可以调用,设置iframe调用 http://www.xp37.com/map/google.html 这个页面的时候会自动跳转到这个页面上,检测了 一下是代码设置的问题,在JS文件里面调用了这么一段代码:

  1. if (top.location != self.location) {top.location=self.location;}
复制代码

  使用这段代码之后会检测是不是location是否是顶层的,即是否被嵌套到iframe里面了,如果是,则强制跳转至嵌套页面。知道了这个问题了解决方法就简单了,要不从当前页面修改,要么就从调用页面修改。

  由于我的是在自己的网站内,所以直接从调用页面修改,注释掉这段代码就OK了。

  如果不是自己的网页,那就需要做一下修改,要么让网页误以为他是在顶层,要么就是禁用JS代码。禁用JS代码,的前提是你的页面不牵扯到使用JS的一些功能,否则一起禁用了就麻烦了。以下是我找到的一些资料,由于我的问题已经解决,没做测试,需要的话可以自己测试一下。

4 a" v+ @8 `0 ~" {$ _( u/ j; ]

一时间搜索无果,网上的很多做法都不怎么行了。然后找到了这两篇文章:

http://www.codinghorror.com/blog/2009/06/we-done-been-framed.html 以及:http://seclab.stanford.edu/websec/framebusting/framebust.pdf 特别是第二篇文章,介绍了很多基于iframe的攻防技术。

双重iframe的确可以阻止强制跳转。但是,第一层的iframe就覆盖了第二层的。所以要把第一层的做成透明的,然后第二层嵌套博客大巴这个网页。对我来说比较复杂。

后来我的做法如下:

  1. <iframe src="http://luanqi-cat.blogbus.com/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

即增加两个:security="restricted" sandbox="",前者是IE的禁止js的功能,后者是HTML5的功能。刚好就可以让IE,Chrome,Firefox这三大浏览器都实现了禁止iframe的自动跳转


' B  [+ f2 ^! p' x* e" H
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

热议作品
精华帖子排行
精彩推荐

虾皮社区,成立十年了!

站长自己也搞不懂想做个什么,反正就是一直在努力的做!

Copyright © 2007-2019 xp6.org Powered by Discuz

QQ|小黑屋|手机版|Archiver|虾皮社区 ( 鲁ICP备13006813号-1 ) 鲁公网安备 37021102000261号
返回顶部 返回列表