> 博客 > 网站优化技巧 > 使用X-Frame-Options防止网页被非法iFrame

使用X-Frame-Options防止网页被非法iFrame

     2017-12-05  点击:3492次

使用X-Frame-Options防止网页被非法iFrame

X-Frame-Options HTTP 响应头是用来给浏览器指示允许一个页面可否在 <frame><iframe> 或者 <object> 中展现的标记。网站可以使用此功能,来确保自己网站的内容没有被嵌到别人的网站中去,也从而避免了点击劫持 (clickjacking) 的攻击。

使用 X-Frame-OptionsEdit

X-Frame-Options 有三个值:

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

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

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

就是说,如果设置为 DENY,在所有的网站中 frame 嵌入时都会无法加载(包含同域名下的其他网页)。如果设置为 SAMEORIGIN,那么页面就可以在同域名页面的 frame 中嵌套。

X-Frame-OptionsEdit可以在apache和nginx服务器中统一配置,而IIS则需要配置web.config文件

配置 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 文件中:

<system.webServer>
  ...

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

  ...
</system.webServer>

需要注意的是:CSP Level 2 规范中的 frame-ancestors 指令会替代这个非标准的 header。CSP 的 frame-ancestors 会在 Gecko 4.0 中支持,但是并不会被所有浏览器支持。然而 X-Frame-Options 是个已广泛支持的非官方标准,可以和 CSP 结合使用。


参考资料:RFC 7034 - HTTP Header Field X-Frame-Options


相关文章