Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复使用Spring Security保护的应用程序中报告的OWASP不安全临时文件问题_Spring_Spring Mvc_Spring Boot_Spring Security - Fatal编程技术网

如何修复使用Spring Security保护的应用程序中报告的OWASP不安全临时文件问题

如何修复使用Spring Security保护的应用程序中报告的OWASP不安全临时文件问题,spring,spring-mvc,spring-boot,spring-security,Spring,Spring Mvc,Spring Boot,Spring Security,我正在使用IBM AppScan查找使用Spring Security的应用程序中的潜在漏洞。AppScan报告了应用程序的不安全临时文件下载问题 该工具报告,对URL的请求(如contact us.1、contact us.~1、contact-us.bak等)会以HTTP状态代码200和相同的内容进行响应。有问题的应用程序确实有一个映射到URL Contact Us的Contact Us页面。页面的控制器代码如下所示: @RequestMapping(value = UrlContraint

我正在使用IBM AppScan查找使用Spring Security的应用程序中的潜在漏洞。AppScan报告了应用程序的不安全临时文件下载问题

该工具报告,对URL的请求(如contact us.1、contact us.~1、contact-us.bak等)会以HTTP状态代码200和相同的内容进行响应。有问题的应用程序确实有一个映射到URL Contact Us的Contact Us页面。页面的控制器代码如下所示:

@RequestMapping(value = UrlContraints.URL_CONTACT_US, method = RequestMethod.GET) 
public String contactUs(HttpServletRequest request
                        , HttpServletResponse response) throws IOException { 
    return "pages/home/contact-us"; 
}
努力

我已将此代码段放入Spring安全配置中,但它不起作用

.authorizeRequests().antMatchers("*.ARC", "*.arc", "*.BAC", "*.bac"
                                 , "*.BACKUP", "*.backup"
                                 , "*.bak", "*.BAK"
                                 , "*.inc", "*.include"
                                 , "*.save", "*.sav", "*.tar.lzma", "*.tmp"
                                 , "*.temp", "*.TMP"
                                 , "*.wim", "*.1", "*.a"
                                 , "*.lst", "*.lzma", "*.old", "*.-old"
                                 , "*.OLD", "*.-OLD", "*.old2"
                                 , "*.orig", "*.ORIG", "*.htm", "*.html"
                                 "*.txt"
                                 , "*.$*", "*.~*", "*.0", "*.ar")
                    .denyAll()
但这也不起作用

.authorizeRequests().antMatchers("*.ARC", "*.arc", "*.BAC", "*.bac"
                                 , "*.BACKUP", "*.backup"
                                 , "*.bak", "*.BAK"
                                 , "*.inc", "*.include"
                                 , "*.save", "*.sav", "*.tar.lzma", "*.tmp"
                                 , "*.temp", "*.TMP"
                                 , "*.wim", "*.1", "*.a"
                                 , "*.lst", "*.lzma", "*.old", "*.-old"
                                 , "*.OLD", "*.-OLD", "*.old2"
                                 , "*.orig", "*.ORIG", "*.htm", "*.html"
                                 "*.txt"
                                 , "*.$*", "*.~*", "*.0", "*.ar")
                    .denyAll()
请帮助我如何解决此问题。

Spring MVC默认执行。*后缀模式匹配,以便映射到contact us的控制器方法也隐式映射到contact us。*。这一点已在下文的相关部分中明确指出

默认情况下,Spring MVC执行.*后缀模式匹配,以便 映射到/person的控制器也隐式映射到/person.*。 然后使用文件扩展名解释请求的内容类型 用于响应,即代替Accept标头,例如。 /person.pdf、/person.xml等

如果这是不需要的,文档本身也提供了解决方案:

要完全禁用文件扩展名的使用,必须同时设置以下两项:

useSuffixPatternMatchingfalse,请参阅路径匹配配置器

favorPathExtensionfalse,请参阅ContentNeogiationConfigurer

Java配置 XML配置
两者都是一样的。我想修复不安全的临时文件。我并没有任何链接,相反,工具尝试触发类似这些URL的东西联系我们。1,联系我们。~1,contact-us.bak等,并从应用程序获得200 OK响应。我想解决这个问题。实际上,如果url是contact us,它将返回与contact us页面相同的页面。~1 etc表示contact us前缀。如果url匹配不存在,则返回404页。是。我有,它工作得很好。
<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
    ...
    <property name="favorPathExtension" value="false" />
</bean>

<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager">
    ...
    <mvc:path-matching suffix-pattern="false" />
</mvc:annotation-driven>