Web应用程序中的CSRF保护

时间:2014-06-10 08:46:24

标签: java spring apache csrf

我的应用程序具有apache模块提供的 CSRF保护。我的应用程序包含几个允许上传某些文件的页面,如下所示:

<form:form method="post" action="my.controller" enctype="multipart/form-data" id="form">

当我们将apache版本从 httpd-2.2.3 更新为 httpd-2.2.15 时,所有内容都运行良好。

我已经搜索了一段时间,发现该问题可能与我的表单中的 multipart / form-data 参数有关。在这种情况下,表单发送为不安全。另外我发现spring可以通过spring doc http://docs.spring.io/spring-security/site/docs/3.2.0.CI-SNAPSHOT/reference/html/csrf.html#csrf-multipartfilter

中的 MultipartFilter 处理上述内容

我是CSRF新手。很高兴知道可以使用弹簧CSRF保护 apache 配置来处理此类情况。

此外,我找到了解决方法,我可以为所需的URL禁用CSRF,例如

  

RewriteRule /url/mycontroller.controller - [E = CSRF_IGNORE:yes]

但我不确定这是不正确的。

1 个答案:

答案 0 :(得分:1)

以下是我的建议:

如果不需要,请删除enctype,因为某些CSRF库(包括CSRF Guard)不支持multipart / form-data。

如果使用隐藏属性设置CSRF令牌,请尝试在action属性中附加令牌。 以下是此链接:https://code.google.com/p/csrf-filter/

如果您仍然遇到同样的问题,则可能需要从CSRF检查中排除该网址。