这是用OWASP ZAP漏扫软件扫出来的漏洞,漏洞提示响应头没有设置。通过过滤器设置响应头,扫描的时候还是存在漏洞。仔细排查,在tomcat 9服务器的conf目录下,web.xml文件中,加入一段过滤代码,解决问题。
在Java中增加过滤器的代码如下:
HttpServletRequest req = (HttpServletRequest)request;
HttpServletResponse res = (HttpServletResponse)response;
res.addHeader("X-Frame-Options", "DENY");
chain.doFilter(req, res);
在tomcat 9中的web.xml文件中增加的过滤器配置如下:
<filter>
<filter-name>httpHeaderSecurity</filter-name>
<filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
<async-supported>true</async-supported>
<init-param>
<param-name>antiClickJackingEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>antiClickJackingOption</param-name>
<param-value>SAMEORIGIN</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>httpHeaderSecurity</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
在web.xml中增加配置需要找到对应的地方,文件中有注释掉的filter
另外,X-Frame-Options有三种可配置值
-
X-Frame-Options: DENY
-
X-Frame-Options: SAMEORIGIN
-
X-Frame-Options: ALLOW-FROM
DENY 表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
SAMEORIGIN 表示该页面可以在相同域名页面的 frame 中展示。
ALLOW-FROM uri 表示该页面可以在指定来源的 frame 中展示
根据实际情况来指定配置,通常不会嵌入frame的就用DENY,比如extjs