防止自己的网页被别人iframe嵌套,多种方法详解

[复制链接]
查看: 698|回复: 0

7

主题

7

帖子

25

积分

新手上路

Rank: 1

积分
25
发表于 2020-4-14 16:23:20 | 显示全部楼层 |阅读模式
由于嵌入iframe的嵌入 使得网站变的更不安全, 如何能防止网页禁止被iframe嵌入呢?

首先看下知名网站使用的方法:
  1. <script type="text/javascript">
  2. document.domain="qq.com";var _s_=new Date(),g_T={},siDomain="ctc.qzonestyle.gtimg.cn",g_iUin=499469859,g_iLoginUin=499469859;g_T.fwp=[_s_];document.namespaces&&document.namespaces.add&&(document.namespaces.add('qz', 'http://qzone.qq.com/'),document.namespaces.add('x', 'http://qzone.qq.com/'));var QZFL={};QZFL.event={};QZFL.event.getEvent=function(evt){var evt=window.event||evt,c,cnt;if(!evt&&window.Event){c=arguments.callee;cnt=0;while(c){if((evt=c.arguments[0])&&typeof(evt.srcElement)!="undefined"){break;}else if(cnt>9){break;}c=c.caller;++cnt;}}return evt;};QZFL.event.getTarget=function(evt){var e=QZFL.event.getEvent(evt);if(e){return e.srcElement||e.target;}else{return null;}};var QZFF_M_img_ribr=[];QZFL.media={reduceImgByRule:function(ew,eh,opts,cb){QZFF_M_img_ribr.push(QZFL.event.getTarget());},adjustImageSize:function(w,h,trueSrc,cb,errCallback){QZFF_M_img_ribr.push(QZFL.event.getTarget());},reduceImage:function(){QZFF_M_img_ribr.push(QZFL.event.getTarget());},getImageInfo:function(){QZFF_M_img_ribr.push(QZFL.event.getTarget());}};g_T.fwp[1] = new Date();</script>
复制代码
这个是腾讯QQ空间使用的防嵌套方法
  1. if(window.top !== window.self){ window.top.location = window.location;}
复制代码
这个是淘宝使用的方法

这个要说下,其实今天要介绍,四种防iframe的方法

第一种要说的就是淘宝使用的办法

解决方案一:js方法
  1. <script type="text/javascript">
  2. if(self != top) { top.location = self.location; }
  3. </script>
复制代码
  1. if (self == top) {
  2.     var theBody = document.getElementsByTagName('body')[0];
  3.     theBody.style.display = "block";
  4. } else {
  5.     top.location = self.location;
  6. }
复制代码
上面两种方法都是可以的

把上面的JS代码片段放到你页面的 head 中即可。

要特别说明下这种方法不是很靠谱,可以很轻松使这种方法失效。

只需要添加下面代码使JS代码失效,这种方法就没用了。
  1. <script type="text/javascript" charset="utf-8">
  2. document.write('<iframe seamless sandbox security="restricted" id="url_mainframe" frameborder="0" scrolling="yes" name="main" src="http://aisoa.cn" style="height:100%; visibility: inherit; width: 100%; z-index: 1;overflow: visible;"></iframe>');
  3. </script>//把里面的http://aisoa.cn换成要嵌套的网址
复制代码
解决方案二:Meta标签方法

在需要禁用iframe嵌套的网页head中添加下面代码
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
以上两种为前端处理方法,就我个人来说不推荐使用,不过这个也是因人而异的,没有绝对的好与差。

解决方案三:PHP方法
  1. <?php header(‘X-Frame-Options:Deny'); ?>
复制代码
在需要禁用iframe嵌套的PHP网页中添加上面代码

上面这种是后端程序处理方法。

解决方案四:Apache主机方法

配置 Apache 在所有页面上发送 X-Frame-Options 响应头,需要把下面这行添加到 'site' 的配置中:
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
解决方案五:Nginx主机方法

配置 nginx 发送 X-Frame-Options 响应头,把下面这行添加到 'http', 'server' 或者 'location' 的配置中:
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
配置 IIS 发送 X-Frame-Options 响应头
添加下面的配置到 Web.config 文件中:
  1. <system.webServer>
  2.   ...
  3.   <httpProtocol>
  4.     <customHeaders>
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />
  6.     </customHeaders>
  7.   </httpProtocol>
  8.   ...
  9. </system.webServer>
复制代码
解决方案六:.htaccess方法

在网站根目录下的.htaccess文件中中加一句
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
以上几种解决方案为服务器端解决方案。
腾讯云
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩图文



在线客服(工作时间:9:00-22:00)
400-600-6565

内容导航

微信客服

Copyright   ©2015-2019  云服务器社区  Powered by©Discuz!  技术支持:尊托网络     ( 湘ICP备15009499号-1 )