【问题标题】:X-Frame-Options Header Not Set in Apache Tomcat 8.5.9Apache Tomcat 8.5.9 中未设置 X-Frame-Options 标头
【发布时间】:2018-06-08 18:28:48
【问题描述】:

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

  1. X-Frame-Options 标头未设置
  2. Web 浏览器 XSS 保护未启用
  3. X-Content-Type-Options 标头丢失

为此,我在 conf 文件夹中的 Apache Tomcat 8.5.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>
    <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 服务器中缺少什么。

【问题讨论】:

    标签: java apache security tomcat httpresponse


    【解决方案1】:

    我想在&lt;iframe&gt;&lt;/iframe&gt; 中显示 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的页面

    【讨论】:

      猜你喜欢
      • 2021-05-06
      • 2020-07-21
      • 2023-03-08
      • 1970-01-01
      • 2018-09-04
      • 2019-03-31
      • 1970-01-01
      • 2013-11-16
      • 2015-08-25
      相关资源
      最近更新 更多