X-Frame-Options

来自ling
跳转至: 导航搜索

https://blog.51cto.com/u_8596219/2496881

X-Frame-Options的nginx配置
X-Frame-Options头主要是为了防止站点被别人劫持、iframe引入

nginx配置形式:

add_header X-Frame-Options ALLOWALL; #允许所有域名iframe

add_header X-Frame-Options DENY; #不允许任何域名iframe,包括相同的域名

add_header X-Frame-Options SANEORIGIN; #允许相同域名iframe,如a.test.com允许b.test.com

add_header X-Frame-Options ALLOW-FROM uri; #允许指定域名iframe,

配置可以放入到nginx的 http 或者 server 中

 add_header X-Frame-Options SAMEORIGIN;


在nginx.conf配置文件中在http或者server中配置

add_header X-Frame-Options "ALLOW-FROM http://ex.com";

X-Frame-Options对于谷歌浏览器不起作用,对谷歌浏览器也起作用

add_header Content-Security-Policy "frame-ancestors http://ex.com http://ex1.com";

因为frame busting存在被绕过的可能,所以我们需要寻找其他更好的解决方案。一个比较好的方案是使用一个HTTP头--X-Frame-Options。

X-Frame-Options可以说是为了解决ClickJacking 而生的,目前有以下浏览器开始支持X-Frame-Options:


IE 8+

Opera 10.50+
 
Safari 4+
 
Chrome 4.1.249.1042+
 
Firefox 3.6.9 (or earlier with NoScript)
 

它有三个可选的值:

DENY

SAMEORIGIN
 
ALLOW-FROM origin
JSP代码: 
response.setHeader("X-Frame-Options","SAMEORIGIN");
response.setHeader("X-Frame-Options","SAMEORIGIN");

DENY:浏览器拒绝当前页面加载任何Frame页面

SAMEORIGIN:frame页面的地址只能为同源域名下的页面

ALLOW-FROM:origin为允许frame加载的页面地址

说到这里肯定会问我设置方法,请往下看:

Apache配置

在你配置站点的地方添加一行:

Header always append X-Frame-Options SAMEORIGIN

nginx配置:

add_header X-Frame-Options SAMEORIGIN;

IIS配置: <system.webServer>

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

</system.webServer>



HAProxy配置

     rspadd X-Frame-Options:\ SAMEORIGIN

PHP和JSP等动态文件更方便

改一下头信息
    PHP代码: header(‘X-Frame-Options:SAMEORIGIN’);
  JSP代码: response.setHeader(“X-Frame-Options”,”SAMEORIGIN”);
 

当值为DENY时,浏览器会拒绝当前页面加载任何frame页面;若值为SAMEORIGIN,则frame页面的地址只能为同源域名下的页面;若值为ALLOW-FROM,则可以定义允许frame加载的页面地址。