网站地图    收藏   

主页 > 前端 > javascript >

防止网页被嵌入框架的方法介绍

来源:自学PHP网    时间:2014-09-19 14:47 作者: 阅读:

[导读] 防止网页被嵌入框架的方法介绍,方法有很多我们常用的是js防止,当然也可以实现像php程序判断来源这类的操作。...

我写了一段很简单的javascript代码,大家只要将它放入网页源码的头部,那些流氓就没有办法使用你的网页了。

 代码如下 复制代码

<script type="text/javascript">

if (window!=top) // 判断当前的window对象是否是top对象

top.location.href =window.location.href; // 如果不是,将top对象的网址自动导向被嵌入网页的网址

</script>

这段代码是有效的。但是,有一个问题:使用后,任何人都无法再把你的网页嵌入框架了,包括你自己在内


问题很简单。只要做一个判断:当前框架和顶层框架的域名是否相同,如果答案是否,就做了一个URL重定向。

 代码如下 复制代码

if (top.location.hostname != window.location.hostname) {

  top.location.href = window.location.href;

}

但是还是不能运行,

假定 top.location.hostname 是 www.111cn.net,而 window.location.hostname 是 www.111cn.net。也就是说,111.com把222.com嵌入了它的网页中。这时,比较 top.location.hostname != window.location.hostname 会有


事实上,这提示我们,只要查看top.location.hostname是否报错就可以了。如果报错了,表明存在跨域,就对top对象进行URL重导向;如果不报错,表明不存在跨域(或者未使用框架),就不采取操作。

 代码如下 复制代码

try{

  top.location.hostname;

}

catch(e){

  top.location.href = window.location.href;

}

这样

写已经正确了,在IE和Firefox中可以正确运行。但是,Chrome浏览器会出现错误,不知为何,在跨域情况下,Chrome对top.location.hostname不报错!

没办法,只能为了Chrome,再加一段补充代码。

 代码如下 复制代码

try{

  top.location.hostname;

  if (top.location.hostname != window.location.hostname) {

    top.location.href =window.location.href;

  }

}

catch(e){

  top.location.href = window.location.href;

}

再分享一个实例

 代码如下 复制代码


<script type="text/javascript">
if(window.top && window.top !== window.self ){
try{
top.frames["clientFrame"].document.domain;
}
catch(e){
setTimeout(function(){
window.top.location = window.self.location;
document.body.innerHTML = '';
}, 0);
window.self.onload=function(){
document.body.innerHTML = '';
}
}
}
</script>

如果确有必要,将他人的网页嵌入自己的框架,那么应该同时满足以下三个条件:

A. 在框架网页的醒目位置,清楚地说明该网页使用了框架技术,并明确列出原网页的URL网址。

B. 在框架网页的醒目位置,向访问者提供"移除框架"的功能。

C. 不得附加任何广告或恶意代码。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论