[转]X-Frame-Options防止网页放在iframe中


X-Frame-Options是什么?

X-Frame-Options是一个HTTP标头(header),用来告诉浏览器这个网页是否可以放在iFrame内。例如:

  • X-Frame-Options: DENY
  • X-Frame-Options: SAMEORIGIN
  • X-Frame-Options: ALLOW-FROM http://caibaojian.com/

第一个例子告诉浏览器不要(DENY)把这个网页放在iFrame内,通常的目的就是要帮助用户对抗点击劫持。

第二个例子告诉浏览器只有当架设iFrame的网站与发出X-Frame-Options的网站相同,才能显示发出X-Frame-Options网页的内容。

第三个例子告诉浏览器这个网页只能放在http://caibaojian.com//网页架设的iFrame内。

不指定X-Frame-Options的网页等同表示它可以放在任何iFrame内。

X-Frame-Options可以保障你的网页不会被放在恶意网站设定的iFrame内,令用户成为点击劫持的受害人。

使用X-Frame-Options 有两种可能的值:
  • DENY :该页无法显示在一个框架中.
  • SAMEORIGHT :页面只能显示在页面本网站的框架中.
有时候为了防止网页被别人的网站iframe,我们可以通过在服务端设置HTTP头部中的X-Frame-Options信息。
  • X-Frame-Options 响应头有三个可选的值:
  • DENY:页面不能被嵌入到任何iframe或frame中;
  • SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中;
  • ALLOW-FROM:页面允许frame或frame加载。
在服务端设置的方式如下:
Java代码:
response.addHeader("x-frame-options","SAMEORIGIN");
Nginx配置:
add_header X-Frame-Options SAMEORIGIN
Apache配置:
Header always append X-Frame-Options SAMEORIGIN

另外查了最新的资料,还可以直接通过meta标签来设置,不需要放在http头部请求中了。

<meta http-equiv="X-Frame-Options" content="deny">

两个参数:(作用与上面一致)

  1. SAMEORIGIN
  2. DENY
解决办法:在web.config添加以下配置

  ...
  
    
      "X-Frame-Options" value="SAMEORIGIN" />
    
  
  ...

Cross-window communication