php嵌套 frame,终极解决禁止网站被别人通过iframe引用嵌套套入。

今天介绍四种防iframe的方法。

方法一:JavaScript

JavaScript

if(self != top) { top.location = self.location; }

1

2

3

if(self!=top){top.location=self.location;}

JavaScript

if (self == top) {

var theBody = document.getElementsByTagName('body')[0];

theBody.style.display = "block";

} else {

top.location = self.location;

}

1

2

3

4

5

6if(self==top){

vartheBody=document.getElementsByTagName('body')[0];

theBody.style.display="block";

}else{

top.location=self.location;

}

上面两段代码都是可以的,原理就是先判断网站是否被嵌套。如果被嵌套,则将浏览器重定向到被嵌套的网站。

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

要特别说明下这种方法不是很靠谱,可以很轻松使这种方法失效。只需要添加下面代码使JavaScript代码失效,这种方法就没用了。

JavaScript

document.write('');

//把里面的https://ihongchao.com换成要嵌套的网址

1

2

3

document.write('');

//把里面的https://ihongchao.com换成要嵌套的网址

在介绍第二种方法之前,先介绍一下网站的“X-FRAME-OPTIONS”属性,看名字就能知道,该属性是嵌套选项。分别有三种选择:

DENY:表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。

SAMEORIGIN:表示该页面可以在相同域名页面的 frame 中展示。

ALLOW-FROM uri:表示该页面可以在指定来源的 frame 中展示。

1

2

3DENY:表示该页面不允许在frame中展示,即便是在相同域名的页面中嵌套也不允许。

SAMEORIGIN:表示该页面可以在相同域名页面的frame中展示。

ALLOW-FROMuri:表示该页面可以在指定来源的frame中展示。

方法二:meta标签

在需要禁用iframe嵌套的网页head中添加下面代码

XHTML

1

以上两种为前端处理方法,就我个人来说不推荐使用,不过这个也是因人而异的,没有绝对的好与差。

方法三:编程语言

以PHP为例,在PHP代码中添加如下代码,即可防止网站被iframe嵌套。

PHP

1<?phpheader (‘X-Frame-Options:Deny');?>

方法四:服务器配置

下面分别说明Apache、NGINX和IIS中如何配置,来防止网站被嵌套。原理与方法三相同,即发送消息头告知浏览器本网站不想被嵌套。

首先是Apache。在Apache的配置文件的“site”中添加如下配置,即可。

Header always append X-Frame-Options SAMEORIGIN

1HeaderalwaysappendX-Frame-OptionsSAMEORIGIN

虚拟机由于无法修改配置文件,可以将如下代码加入网站根目录的“.htaccess”文件中,效果相同。

Header append X-FRAME-OPTIONS "SAMEORIGIN"

1HeaderappendX-FRAME-OPTIONS"SAMEORIGIN"

目前势头正旺的NGINX可以在配置文件的http、server或者location中加入如下代码,来防止被嵌套。

add_header X-Frame-Options "SAMEORIGIN";

1add_headerX-Frame-Options"SAMEORIGIN";

在IIS中,可以将网站根目录的web.config配置文件做如下修改,来禁止网站被嵌套。

XHTML

...

...

1

2

3

4

5

6

7

8

9

...

...

如此这般之后,你的网站就不会被第三方网站嵌套了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值