最近使用360网站安全检测对自己的网站进行了一次全面检测,发现有这样一个安全提醒:
WEB服务器启用了OPTIONS方法,X-Frame-Options头未设置。危害: 攻击者可以使用一个透明的、不可见的iframe,覆盖在目标网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击iframe页面的一些功能性按钮上,导致被劫持。
虽然是轻微漏洞,但看着很不舒服,有强迫症的我决定把这个问题处理了。经过一番学习,知道了X-Frame-Options属性的一些用法:
X-Frame-Options HTTP 响应头是用来给浏览器指示允许一个页面可否在, 或者中展现的标记。网站可以使用此功能,来确保自己网站的内容没有被嵌到别人的网站中去,也从而避免了点击劫持 (clickjacking) 的攻击。
X-Frame-Options 主要有以下三个值:
DENY:表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。如果设置为 DENY,不光在别人的网站 frame 嵌入时会无法加载,在同域名页面中同样会无法加载。
SAMEORIGIN:表示该页面可以在相同域名页面的frame中展示。如果设置为SAMEORIGIN,那么页面在别人的网站frame嵌入时会无法加载,而可以在同域名页面的frame中嵌套。
ALLOW-FROM uri:表示该页面可以在指定来源的 frame 中展示。如果设置为ALLOW-FROM uri,那么页面可以在任何网站frame嵌入。
其实要配置这个属性也很简单,接下来余斗就根据不同的服务器教大家如何配置这个属性:
配置 nginx
把下面代码这行添加到 'http', 'server' 或者 'location' 的配置中:
add_header X-Frame-Options SAMEORIGIN;
配置 Apache
需要把下面这行代码添加到 'site' 的配置中:
Header always append X-Frame-Options SAMEORIGIN
配置 TOMCAT
需要把下面这行代码添加到过滤器(tomact服务器的过滤器配置可以自行百度教程)中:
HttpServletResponse response = (HttpServletResponse) sResponse;
response.addHeader("x-frame-options","SAMEORIGIN");
配置 IIS
添加下面代码配置到 Web.config 文件中:
...
...
我们可以先看下自己的空间是什么样的服务器,根据不同的服务器类型来选择不同的配置方法,经过配置后再测试,果然没有进行漏洞提醒,这个问题完美解决!