1
Frannk 2012-11-20 22:31:48 +08:00
|
2
snowhs 2012-11-20 22:33:18 +08:00
``` javascript
if (window.top!=window.self) { // iframed, do something // check if window.top.document.URL in white list // `window.top.location = http://your_real_host.xxx` to jump out } ``` |
3
snowhs 2012-11-20 22:34:17 +08:00
这段代码要直接写在html页面上,不要作为一个单独js引用,因为单独js的url可能被ISP拦截
|
4
snowhs 2012-11-20 22:36:22 +08:00
嗯,1L的方法更优雅,虽然考虑到IE6和7还是要用js多一道保险。
|
5
flylee2011 OP @snowhs 我下面这段 ,window.top.location 和window.self.location都一样啊?
<iframe src="http://www.baidu.com"></iframe> <script type="text/javascript"> console.log(window.top.location); console.log(window.self.location); </script> |
6
raptium 2012-11-20 22:47:54 +08:00 1
@flylee2011 上面防止的是你的页面被嵌到其他网页里面
你要的效果我觉得 直接把所有 iframe element 删掉就好了= = |
7
raptium 2012-11-20 22:49:15 +08:00
但是如果他能做到在你的页面上加入任意的 iframe,那么理论上也能把你的 js 删掉,所以事实上你没办法对付这种情况
|
8
flylee2011 OP @snowhs 我是要防止 被 iframe
|
9
flylee2011 OP @raptium 可以把iframe删掉 ,但是我还是要允许合法的iframe进来,不能都删了的。。 就是怎么防止被iframe。。
|
10
raptium 2012-11-20 22:52:32 +08:00
@flylee2011 检查一下域名不就行了么…… 可还是我前面说的,既然你的页面都有可能被人任意改了,你写再多的 js 不也一样能被改掉?
|
11
darasion 2012-11-20 22:54:42 +08:00
@flylee2011 iframe 本不该存在。删掉无妨。
|
12
binux 2012-11-20 22:58:28 +08:00
如果是防止网页中插入iframe。。额,别人都可以插入iframe了,干什么不可以啊
如果是防止被别人当做iframe插入,在你的页面上用window.top判断 |
13
Frannk 2012-11-20 23:15:32 +08:00
简单来考虑就行吧 服务器上加头就OK了
被嵌入的话 js不能被干掉 因为有同源策略,外面的不能操作里面的。 |
14
Mutoo 2012-11-21 00:52:52 +08:00
给你分析一下
script guys 利用iframe的目的: 1)刷目标页面的流量; 2)隐藏的后门(争对没有打补丁的浏览器,特别是IE); 恶意iframe的来源 1)跨站攻击(xxs),通过留言或其它方式将<iframe>标签植入页面 2)服务器被植入后门,自动搜索htm,html,asp,php等文件,加入width|height=0的iframe, 由于安全沙箱的存在,有很多事是iframe做不到的,比如读跨域的父页cookie等。 如果你真想阻止iframe的话,从来源下手吧,特别是第二条,建议升级杀毒软件,防火墙,检查是否有后门。iframe不会无端地出现……除非你的前端人员有问题。 |
15
txlty 2012-11-21 01:42:19 +08:00
完全做不到。其他网站想iframe嵌入你的网站,是别人的事,与你没关系。
html5中,增加了iframe的安全性,可以阻止iframe内的页面运行脚本,防止iframe src=""里的页面在你的网站上执行代码。这样你的一切限制就都失效了。 测试代码:我不信你能防止其他网站这样iframe你 <iframe seamless sandbox security="restricted" src="你的网站地址"></iframe> |
16
txlty 2012-11-21 02:03:50 +08:00
比如豆瓣的搜索页,采用了一些措施,其他网站这样嵌入豆瓣的搜索结果,就会跳出iframe,自动跳到豆瓣的地址
<iframe src="http://www.douban.com/search?q=test"></iframe> 但如果这样,豆瓣就跳不出去了。 <iframe seamless sandbox security="restricted" src="http://www.douban.com/search?q=test"></iframe> 我做过一个聚合搜索网站,通过iframe嵌入多个搜索引擎的结果,所以专门研究过这个问题。 LZ的意思应该是,如何防止大网站嵌入0像素iframe变相对小网站发动攻击? 答案是,无解。 |
17
txlty 2012-11-21 02:07:47 +08:00
|
18
mckelvin 2012-11-21 08:13:57 +08:00
常见的攻击方式叫「clickjacking」,请Google。加http头X-FRAME-OPTIONS防范是最优雅的,tw、fb、Github就是这样做的,但是考虑浏览器兼容再加个js判断。security="restricted" 之后js会被禁用,在类似「分享到xx」这种典型场景下,分享按钮如果也受js限制点了没反应,那就没什么利用价值了。最安全的方式是默认显示空白,js判断安全后显示正常的css。OSWAP上介绍clickjacking的页面上也是这样写的
|