我将 Apache Tomcat 8.5.9 服务器用于带有 struts2、spring 和 spring-security 的 Java Web 应用程序。在使用“Zap 2.7.0 安全扫描工具”进行安全测试时,我在我的 Web 应用程序的扫描报告中遇到了以下错误。
- 未设置 X-Frame-Options header
- 未启用 Web 浏览器 XSS 保护
- 缺少 X-Content-Type-Options header
为此,我在 Apache Tomcat 8.5.9 服务器的 conf 文件夹中的 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>
<init-param>
<param-name>xssProtectionEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>blockContentTypeSniffingEnabled</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>httpHeaderSecurity</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
即使在使用上面的代码之后,错误也没有得到修复。但是当我尝试在 Apache Tomcat 7.0.5 中使用上面的代码时它工作正常
谁能告诉我在 Apache Tomcat 8.5.9 服务器中缺少什么。
最佳答案
当我想在 <iframe></iframe>
中显示 pdf 时遇到问题.我确实这样做了。
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
registry.addResourceHandler("/jspf/**").addResourceLocations("/jspf/");
// registry.addResourceHandler("/Portafolios/**").addResourceLocations("/Portafolios/");
registry.addResourceHandler("/portafolio/**")
.addResourceLocations("file:"+System.getProperty("user.home")+"/Documents/PPP/")
.setCacheControl(CacheControl.maxAge(2, TimeUnit.HOURS).cachePublic());
super.addResourceHandlers(registry);
}
我将我的 pdf 放在 portafolio 目录中。我还修改了 Apache tomcat 的 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>
我修改了 SecurityConfig 类的 configure() 方法。
@Override
protected void configure(HttpSecurity http) throws Exception{
http
.headers()
.frameOptions()
.sameOrigin()
.contentSecurityPolicy("frame-ancestors 'self'").and()
.and()
.....
other things
.....
}
您可能有 web.xml,但我认为您缺少修改 configure() 方法。你可以查看spring的页面
关于java - Apache Tomcat 8.5.9 中未设置 X-Frame-Options header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48003553/