当前位置: 首页 > 知识库问答 >
问题:

Spring Security CSRF禁用不工作

萧晔
2023-03-14

我有一个应用程序,它使用Spring Security进行身份验证。之前我们使用的是spring security 3.2.10,现在尝试升级到4.2.6。在spring 4之后的版本中,默认情况下会启用CSRF保护。

我遵循移民指南-https://docs.spring.io/spring-security/site/migrate/current/3-to-4/html5/migrate-3-to-4-xml.html

当我刚刚更改了名称空间,更换了安全JAR,并试图从登录页面登录时,它给出了404错误,错误为“/j_spring_security_check”。

根据指南,我将表单登录操作更改为“/登录”,而不是“/j_spring_security_check”。还将用户名和密码参数更改为“用户名”和“密码”,而不是登录页面中定义的“j_username”和“j_password”。

 <form action="/login" method="POST">

在这些更改之后,我得到了与403状态代码相关的CSRF令牌错误-

 Type Status Report
 Message Could not verify the provided CSRF token because your session was 
 not found.
 Description The server understood the request but refuses to authorize it.

通过在Spring Security配置文件中添加以下内容,我禁用了CSRF保护-

  <security:http disable-url-rewriting="true" use-expressions="true">
    <security:csrf disabled="true"/>
    ..
    <security:intercept-url pattern="/login.jsp" 
    access="hasRole('ROLE_ANONYMOUS')"/>
    <security:form-login login-page="/login.jsp"
                         authentication-failure-url="/login.jsp? 
                         login_error=1"
                         default-target-url="/index.html" authentication- 
             success-handler-ref="successHandler" always-use-default- 
    target="true"/>
    <security:logout logout-success-url="/login.jsp"/>

但这仍然不起作用,并给我403状态的CSRF相关错误-

 Type Status Report
 Message Could not verify the provided CSRF token because your session was 
 not found.
 Description The server understood the request but refuses to authorize it.

我错过了什么吗?

共有1个答案

姬天逸
2023-03-14

我终于发现了问题。实际上,在我们的应用程序A中,我们有一个URI的列表,可以由这个应用程序B处理,否则它会将请求转发给另一个应用程序。

所以之前的“j_spring_security_check”就在这个列表中。但我没有在列表中添加“/login”。

在该应用程序B上,CSRF未被禁用,因此导致了问题。

 类似资料:
  • 将感谢任何关于我们应该如何处理这一点的提示!

  • 我是Python新手,对GUI编程更是新手。 我有一个按钮和两个旋转箱,我想在点击开始按钮后禁用它们。我在谷歌上搜索了5种禁用Tkinter按钮的不同方法,但似乎都不起作用。理论上,旋转箱应该以同样的方式被禁用,但我只是运气不好。对整个图形用户界面感到非常沮丧。 和是两个spinbox 正如您所看到的,我尝试对按钮使用,但它不起作用。我见过各种各样的代码,在所有的大写字母、大写字母和不同的引号中都

  • 我试图用Dsun运行一个Java应用程序。java2d。dpiaware=false,但什么也没有发生。 我希望有一个模糊的UI,但正常大小的图标和字体,似乎这个标志不起作用。 我在Windows 8.1上使用JDK 1.8.0\U 45。 我发现了这个bughttps://bugs.openjdk.java.net/browse/JDK-8080153但我不知道如何解决这个问题。

  • 我有一个项目,其中日志方面应用于方法的进入和退出。 要禁用日志,我有下面的语句,但我仍然在日志中看到方法entry、exit(带有跟踪的LogLevel) 但是,当我将loglevel更改为critical(如下所示)时,不会记录方法的进入/退出。 不应该是日志级别。无抑制进入/退出跟踪?

  • 我不能再用加速器了。JMenuItem在菜单中正确地显示为已启用,我可以用鼠标单击它(我的ActionListener正常工作),但加速器不工作--所以我不能再用Ctrl+C启动“Connect”了。 你们中有谁知道这个问题是什么或者我该如何避免它吗? 其他菜单项的加速器(但没有beeing暂时禁用)正在工作。打电话时 下面是一个程序的小代码,它不对键击Ctrl+C做出反应,它连接到一个菜单项:

  • 我在tomcat上配置了ssl,在IE上禁用了tls支持,并启用了ssl支持,但我仍然得到错误消息 Tomcat设置