iis、apache、nginx使用X-Frame-Options防止网页被Frame的解决方法

 更新时间:2017年03月24日 22:24:59   投稿:mdxy-dxy  
X-Frame-Options HTTP响应头是用来确认是否浏览器可以在frame或iframe标签中渲染一个页面,网站可以用这个头来保证他们的内容不会被嵌入到其它网站中

当然也是因为被360检测到了示"X-Frame-Options头未设置",根据360的提示与百度了一些网上的一些资料整理了下,完美解决问题。

首先看下360给出的方案,但么有针对服务器的具体设置,不是每个人对服务器都很懂啊。

描述: 目标服务器没有返回一个X-Frame-Options头。

X-Frame-Options HTTP响应头是用来确认是否浏览器可以在frame或iframe标签中渲染一个页面,网站可以用这个头来保证他们的内容不会被嵌入到其它网站中。

解决方案:

修改web服务器配置,添加X-frame-options响应头。赋值有如下三种:

(1)DENY:不能被嵌入到任何iframe或frame中。
(2)SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中。
(3)ALLOW-FROM uri:只能被嵌入到指定域名的框架中。

也可在代码中加入,在PHP中加入:

header('X-Frame-Options: deny');

下面继续来看下脚本之家从网上整理的更详细的方法

防止网页被Frame,方法有很多种;

方法一: 常见的比如使用js,判断顶层窗口跳转:

(function () {
if (window != window.top) {
window.top.location.replace(window.location); //或者干别的事情
}
})();

一般这样够用了,但是有一次发现失效了,看了一下人家网站就是顶层窗口中的代码,发现这段代码:

var location = document.location;
// 或者 var location = "";

轻轻松松被破解了,悲剧。

方法二: meta 标签:基本没什么效果,所以也放弃了:

<meta http-equiv="Windows-Target" contect="_top">

方法三:使用HTTP 响应头信息中的 X-Frame-Options属性

使用 X-Frame-Options 有三个可选的值:

DENY:浏览器拒绝当前页面加载任何Frame页面
SAMEORIGIN:frame页面的地址只能为同源域名下的页面
ALLOW-FROM:origin为允许frame加载的页面地址

绝大部分浏览器支持:

FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support4.1.249.10423.6.9(1.9.2.9)8.010.54.0

配置 IIS

IIS6中通过HTTP头设置即可

IIS7中可以通过web.config也可以通过类似上面的设置

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

<system.webServer>
 ...

 <httpProtocol>
  <customHeaders>
   <add name="X-Frame-Options" value="SAMEORIGIN" />
  </customHeaders>
 </httpProtocol>

 ...
</system.webServer>

图文界面设置

配置 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;

HAProxy配置

rspadd X-Frame-Options:\ SAMEORIGIN

tomcat 与X-Frame-Options

公司项目是只用了tomcat作为web服务器 ,网上搜的的内容好像并不符合我的要求。
本来的想法是在每个jsp页面中加

<%
 response.addHeader("x-frame-options","SAMEORIGIN");
 %>

可后来想想这种方法太蠢,万一过不了测试还要改过来。

于是又想到了一个方法,在项目原本的过滤器中加了如下代码

HttpServletResponse response = (HttpServletResponse) sResponse;
response.addHeader("x-frame-options","SAMEORIGIN"); 

貌似起了作用  等待客户测试吧!

具体可以查看:

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/X-Frame-Options?redirectlocale=en-US&redirectslug=The_X-FRAME-OPTIONS_response_header

结果

在 Firefox 尝试加载 frame 的内容时,如果 X-Frame-Options 响应头设置为禁止访问了,那么 Firefox 会用 about:blank 展现到 frame 中。也许从某种方面来讲的话,展示为错误消息会更好一点。

用虚拟主机的用户怎么办呢

PHP和JSP等动态文件更方便
改一下头信息
PHP代码:

 header(‘X-Frame-Options:SAMEORIGIN’);

JSP代码:

response.setHeader(“X-Frame-Options”,”SAMEORIGIN”);

ASP代码:

<%Response.AddHeader "X-Frame-Options","SAMEORIGIN"%>

ASP.NET代码:

Response.AddHeader("X-Frame-Options", "Deny");

还是那句话如果确认你整个网站都不能被框架,可以直接设置web服务器,增加X-Frame-Options响应头。IIS如下图所示,增加http头,参考上面的iis6与iis7中的设置方法

浏览器对X-Frame-Options响应头的支持如下

浏览器版本支持
IE8.0+
Firefox3.6.9+
Opera10.50+
Safari4.0+
Chrome4.1.249.1024+
您可能感兴趣的文章:

相关文章

  • windows系统搭建zookeeper服务器的教程

    windows系统搭建zookeeper服务器的教程

    这篇文章主要介绍了windows系统搭建zookeeper服务器的教程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • magento空间更换迁移图文教程

    magento空间更换迁移图文教程

    magento是一款使用比较普遍的免费开源建站软件,magento网站在更换空间迁移时候,步骤有误常会导致一些功能失效或错误出现,下面就详细介绍一下magento空间更换迁移步骤过程,需要的朋友可以参考下
    2015-12-12
  • 记录服务器rm -rf误删文件的恢复过程

    记录服务器rm -rf误删文件的恢复过程

    这篇文章主要介绍了记录服务器rm -rf误删文件的恢复过程,需要的朋友可以参考下
    2018-03-03
  • Nginx服务器负载均衡及ssl原理、生成ssl密钥对、Nginx配置ssl操作示例

    Nginx服务器负载均衡及ssl原理、生成ssl密钥对、Nginx配置ssl操作示例

    这篇文章通过大量的实例总结了nginx服务器上负载均衡的概念、配置、ssl原理、密钥对生成以及nginx服务器上配置ssl的相关操作实现方法
    2018-05-05
  • 10个常见的HTTP状态码详解

    10个常见的HTTP状态码详解

    HTTP状态码是用以表示网页服务器HTTP响应状态的3位数字代码,下面为大家介绍500内部服务器错误,404文件未找到,403禁止访问 等常见的10个HTTP状态码
    2018-09-09
  • cwRsync提示password file must be owned by root when running as root的解决方法

    cwRsync提示password file must be owned by root when running as

    今天在配置服务器的时候,用了rsync4.10版本,客户端是2003服务器端是2008 r2 同步的时候提示password file must be owned by root when running as root问题,以前用老版本的时候没见过,还好看了下面的文章解决了,特分享下
    2015-08-08
  • IBM服务器 RAID5 阵列卡配置教程

    IBM服务器 RAID5 阵列卡配置教程

    这篇文章主要介绍了IBM服务器 RAID5 阵列卡配置教程,脚本之家特别收集整理,需要的朋友可以参考下
    2016-04-04
  • php中安全模式safe_mode配置教程

    php中安全模式safe_mode配置教程

    php的安全模式是个非常重要的内嵌的安全机制,能够控制一些php中的函数,比如system(),同时把很多文件操作函数进行了权限控制,也不允许对某些关键文件的文件
    2012-08-08
  • UDP DUP超时UPD端口状态检测代码示例

    UDP DUP超时UPD端口状态检测代码示例

    这篇文章主要介绍了UDP DUP超时UPD端口状态检测,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • 使用RSYNC在服务器间镜像或者备份目录和文件

    使用RSYNC在服务器间镜像或者备份目录和文件

    rsync是个真正的镜像工具,它能相应地删除本地文件万一服务器上的文件被删除,这一点比wget好,在镜像目录的同时也能排除某些目录及文件。速度非常快
    2010-03-03

最新评论