【问题标题】:Spring CSRF not working on Tomcat 7.0.28Spring CSRF 不适用于 Tomcat 7.0.28
【发布时间】:2016-03-18 04:55:12
【问题描述】:

我有一个使用 Spring Security 4.0.1 版和 Spring 4.1.6 版的 Web 应用程序。
在网络应用程序的每个页面中,我都有

<input type="hidden" name="${_csrf.parameterName}"     value="${_csrf.token}"/>

将 CSRF 令牌发送到服务器的参数。现在我的问题是,如果我看到我有的jsp的源代码

<input type="hidden" name="" value=""/>

因此令牌不会发送到服务器,并且 post 操作会导致消息 HTTP 状态 405 - 不支持请求方法“POST”
如果我在 Tomcat 7.0.5.x 上部署相同的 Web 应用程序,一切正常,它在 WAS 7、WAS 8.5 和 Jboss EAP 6.4 中也能正常工作。
我不明白为什么在这个版本的 Tomcat (7.0.28) 上,我从网站下载,没有更改任何配置等,Spring Security 提供的 CSRF 保护不起作用。

【问题讨论】:

  • Tomcat 7.0.28? -- 你知道当前的Tomcat 7版本是7.0.67!
  • 是的,我知道,但我们的一个客户有那个版本(我有互联网连接,我可以在谷歌上写 tomcat :-)),现在我要更新它,但它不会这并不容易,因为那里有其他应用程序在运行,所以我们必须保证一切正常。我的目的是了解发生了什么
  • 说实话,我不相信问题出在 tromcat 版本上。
  • 正如我之前写的,将 Tomcat 版本升级到最新版本解决了这个问题。
  • 当然你可以相信这不是真的......

标签: spring spring-security tomcat7 csrf-protection


【解决方案1】:

我遇到了同样的问题:Tomcat 7.0.28 无法自动检测 spring 安全过滤器。

我的解决方案是添加这个:

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

到 web.xml 再试一次。

【讨论】:

    【解决方案2】:

    打开 tomcat/confg 文件夹
    看到有一个文件 Context.xml 并打开它
    将 更改为
    那么你就完成了。

    【讨论】:

      猜你喜欢
      • 2014-11-29
      • 1970-01-01
      • 2015-03-06
      • 2022-11-17
      • 2018-11-12
      • 1970-01-01
      • 2015-06-04
      • 2014-05-05
      • 1970-01-01
      相关资源
      最近更新 更多