java - Apache Tomcat 8.5.9 中未设置 X-Frame-Options header

标签 java apache security tomcat httpresponse

我将 Apache Tomcat 8.5.9 服务器用于带有 struts2、spring 和 spring-security 的 Java Web 应用程序。在使用“Zap 2.7.0 安全扫描工具”进行安全测试时,我在我的 Web 应用程序的扫描报告中遇到了以下错误。

  1. 未设置 X-Frame-Options header
  2. 未启用 Web 浏览器 XSS 保护
  3. 缺少 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/

相关文章:

java - 使用递归计算可被 3 整除的总和

php - 使用 PHP-FPM 和 Apache 时如何立即发送 HTTP/2 header

Apache 虚拟主机 : different paths serve different application on same IP

javaws 系统属性放宽或删除安全?

Java:比较两个字符串数组并删除两个数组中存在的元素

java - 断言Java中的行为?

security - Apache 安全默认安装权限

php - 如何防止PHP中的SQL注入(inject)?

java - 返回值

php - Apache 设置特定的 PHP 二进制文件