防止自己的网页放被在别人iframe嵌套 您所在的位置:网站首页 禁用iframe 防止自己的网页放被在别人iframe嵌套

防止自己的网页放被在别人iframe嵌套

2024-05-20 22:21| 来源: 网络整理| 查看: 265

前言:

网页被他人嵌套,可能会引发一些问题:

大量的403/404 访问问题,

可能会被木马网站劫持,

地址无法与内容对应。

避免了点击劫持 (clickjacking) 的攻击

 

解决办法大概有以下几种:

1、在head中设置meta属性

2、使用JS代码控制

3、服务器中设置拦截

 

一、在head中设置meta属性:

或者更详细:

指定具体网站:

X-Frame-Options 响应头:

X-Frame-Options 有三个值:

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

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

ALLOW-FROM uri表示该页面可以在指定来源的 frame 中展示。换一句话说,如果设置为 DENY,不光在别人的网站 frame 嵌入时会无法加载,在同域名页面中同样会无法加载。另一方面,如果设置为 SAMEORIGIN,那么页面就可以在同域名页面的 frame 中嵌套。 DENY:不能被嵌入到任何iframe或frame中。 SAMEORIGIN:页面只能被同源的页面嵌入到iframe或者frame中。 ALLOW-FROM http://xxx.xxx.com:只能被嵌入到指定域名的框架中。

 

 

二、使用JS代码控制 if (top.location != self.location){ alert("本页面被其他网站嵌套"); // 具体操作.... top.location=self.location }

或者:

(function(window,document){ if(top != window){ top.location = location.href; } document.uniqueID != document.uniqueID && !!location.hash && (location.hash = location.hash); window.focus(); })(this,document);

注意:

console.log(window.self === window.top); 判断页面是否被嵌套在iframe里 : 如果返回false –> 说明页面被嵌套在iframe中了 如果返回true –> 说明页面并没有被嵌套在iframe中

前端检测 top 窗口是否就是 self :

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; }

 

 

 

 

三、服务器中设置拦截 配置 Apache

配置 Apache 在所有页面上发送 X-Frame-Options 响应头,需要把下面这行添加到 'site' 的配置中:

Header always append X-Frame-Options SAMEORIGIN 配置 nginx

配置 nginx 发送 X-Frame-Options 响应头,把下面这行添加到 'http', 'server' 或者 'location' 的配置中:

add_header X-Frame-Options SAMEORIGIN; 配置 IIS

配置 IIS 发送 X-Frame-Options 响应头,添加下面的配置到 Web.config 文件中:

... ...

后端代码方式:

package filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class FrameTao implements Filter { public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { //必须 HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; //实际设置 response.setHeader("x-frame-options", "SAMEORIGIN"); //调用下一个过滤器(这是过滤器工作原理,不用动) chain.doFilter(request, response); } public void init(FilterConfig config) throws ServletException { } public void destroy() { } }

在web.xml文件下添加以下内容:

FrameFilter filter.FrameTao FrameFilter /*

 

后端代码参考:https://blog.csdn.net/chanlingmai5374/article/details/78674815#

 

 

以上就是防止网站网页被他人嵌套的部分解决方案.......end tanks.

 

 

 

 

 

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有