如何使用CSRF修复Multipart表单

时间:2019-03-31 20:17:47

标签: java spring security csrf

我正在开发一个Web应用程序,我需要我的用户上传文件。尝试使用enctype ='multipart / form-data'时,提交表单后出现“ 403禁止”字样。我知道这与CSRF保护有关,但是我尝试了一些操作,但没有任何效果。我试图把这个

@Override
protected void beforeSpringSecurityFilterChain(ServletContext servletContext) {
    insertFilters(servletContext, new MultipartFilter());
}
我的SpringSecurityInitializer中的

,但是它什么也没做。我也尝试过以这种形式发送csrf令牌:

<form action="./upload?${_csrf.parameterName}=${_csrf.token}" method="post" enctype="multipart/form-data">

但是随后我不发送表单的其余数据,并且在发送时不发送

@RequestParam(value="enunciado", required = false) String enunciado

我收到一个错误,因为它不存在。

我也尝试将其添加到我的web.xml

<filter>
<filter-name>MultipartFilter</filter-name>
<filter-class>org.springframework.web.multipart.support.MultipartFilter</filter-class>
</filter>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>MultipartFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

,如https://docs.spring.io/spring-security/site/docs/5.0.x/reference/html/csrf.html中所建议。但是,当我这样做时,我的Tomcat服务器在初始化期间崩溃,没有任何特定错误,只是“本地主机上的Server Tomcat v7.0 Server无法启动”。消息,我不知道为什么。

有人可以告诉我如何使用csrf进行多部分工作吗?谢谢

0 个答案:

没有答案