2016
02-04

禁止网页被别的网站嵌套展示

禁止网页被别的网站嵌套展示

最近检查 Google Webmaster 的时候发现很多链接地址错误。它们来自一些提供搜索服务但并不是我们常见的搜索引擎的网站。其中甚至有些网站的搜索结果并不会跳转到对应网站,而是将相应的网页通过 方式嵌入到自己的网站来展示。可以通过 X-Frame-Options 来使这种方式失效,一是避免网页被人恶意使用,二是避免GW中的那些错误记录。

相关的问题在 Clickjacking 页面介绍得非常详细。并且这个网页上还提供了一些非常规的方法。

目录 Contents

1 X-Frame-Options 参数

2 实施方式

2.1 配置网页服务器

2.2 页面硬编入源代码

X-Frame-Options 参数?

X-Frame-Options 有三个参数:

DENY:页面不会展示在任何网站的 frame 里面。

SAMEORIGIN:页面只能展示在具有相同来源的 frame 里面。也就是说,嵌在 frame 里面的网址的域名与嵌有 frame 的网页的域名是一致的情况下可以展示该页面。

ALLOW-FROM uri:只有指定来源的网页可以展示我们的页面。

所以比较保险的用法是使用第二个参数 SAMEORIGIN。别的网站不能嵌套我们的网页,但是我们自己可以。

实施方式?

可以通过配置网页服务器(如 Apache)实现,也可以直接作为页面 header 的内容硬编入页面源代码。

配置网页服务器?

在网页服务器中配置按说是最省事的。相应的设置可以参考这里。其中,Apache 服务器的配置为,在网站的主机配置中加入下面的代码。也可以加入到网站的 .htaccess 文件中。

Header always append X-Frame-Options SAMEORIGIN

当然这个需要 Apache 启用了 mod_headers 模块。

另外,按照这里的讨论,可以直接写成,

X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff

这里同时加入了另外两个选项以提高网站安全性。或者写成,

Header set X-XSS-Protection "1; mode=block"
Header always append X-Frame-Options SAMEORIGIN
Header set X-Content-Type-Options: "nosniff”

这两者是等效的。

如果是 Nginx,可以在 http、server 或者是 location 配置中加入,

add_header X-Frame-Options SAMEORIGIN;

重启网页服务器就生效了。

但是不知道为什么,我的 Apache 服务器上的 WordPress 网站页面的响应头文件里却没有。一个可能性极大的原因是使用的 WP Super Cache(WPSC) 插件缓存造成的。所以水景一页在 WordPress 里头使用了下一方法。

页面硬编入源代码?

直接修改网页的模板。对于 WordPress 来说就是主题的 header.php 文件。在之间增加下面的一行,

如果服务器上有个多个 WP 站点,或者是 WP 多站点使用了不同的主题,则需要对每个在用的主题进行此操作。

虽然这个看起来麻烦点,但是却可以在有 WPSC 的情况下生效。

采用这个方法后,这段时间由于别的网站 frame 嵌套带来的 403、404 错误记录已经减少了很多了。?


如果您通过本站解决了一些问题,并希望本站能够很好的发展下去,动动手指即可帮助我们。

如无特殊说明,解压密码均为:aisoa.cn

您可能感兴趣的文章

    支付宝打赏支付宝打赏微信打赏微信打赏