我的应用程序具有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]
但我不确定这是不正确的。
答案 0 :(得分:1)
以下是我的建议:
如果不需要,请删除enctype,因为某些CSRF库(包括CSRF Guard)不支持multipart / form-data。
如果使用隐藏属性设置CSRF令牌,请尝试在action属性中附加令牌。 以下是此链接:https://code.google.com/p/csrf-filter/
如果您仍然遇到同样的问题,则可能需要从CSRF检查中排除该网址。