X-Frame-Options
HTTP 响应头是用来给浏览器指示允许一个页面可否在 <frame>
, <iframe>
或者 <object>
中展现的标记。网站可以使用此功能,来确保自己网站的内容没有被嵌到别人的网站中去,也从而避免了点击劫持 (clickjacking) 的攻击。
X-Frame-Options有三种可配置值
X-Frame-Options: DENY
X-Frame-Options: SAMEORIGIN
X-Frame-Options: ALLOW-FROM https://example.com/
DENY
表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
SAMEORIGIN
表示该页面可以在相同域名页面的 frame 中展示。
ALLOW-FROM uri
表示该页面可以在指定来源的 frame 中展示。
注: 在网页中设置meta标签是无用的!例如,<meta http-equiv="X-Frame-Options" content="deny">
是没有效果的。不要使用这种方式。需要在下面的配置实例中配置HTTP Header的方式来进行配置,X-Frame-Options
才会起作用。
配置实例
配置 Apache
Windows平台是在httpd.conf里面添加下面配置;如果是ubuntu是在/etc/apache2/sites-available
下面对应的*.conf文件进行配置
配置 Apache 在所有页面上发送 X-Frame-Options 响应头,需要把下面这行添加到 'site' 的配置中:
Header always append X-Frame-Options SAMEORIGIN
配置Apache X-Frame-Options deny , 需要把下面这行添加到 'site' 的配置中:
Header set X-Frame-Options DENY
配置Apache X-Frame-Options 设置 ALLOW-FROM 为一个指定的主机,需要把下面这行添加到 'site' 的配置中:
Header set X-Frame-Options "ALLOW-FROM https://example.com/"
配置好后,可能重启Apache2失败,原因是没有安装headers模块,进入到
/etc/apache2/mods-available
目录,可以看到
执行命令:# a2enmod headers
即可安装headers模块,安装后可以在/etc/apache2/mods-enabled
目录下看到headers模块可用
安装headers模块成功后,再次执行service apache2 restart
即可重新启动apache
配置 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>
配置 HAProxy
配置 HAProxy 发送 X-Frame-Options
响应头, 添加下面这行到 front-end, listen, or backend 配置中:
rspadd X-Frame-Options:\ SAMEORIGIN