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

未找到预期的CSRF令牌Spring Security

阙项禹
2023-03-14

以下是场景:

我使用的是Spring Security 4.0.1,它默认启用了CSRF,直到昨天一切都正常。

昨天,我添加了Spring Security标签,登录(和其他表单工作正常),但一个特殊表单停止工作。

此表单是多部分的,因为上载了两个文件,此表单具有CSRF参数,但服务器正在返回:

HTTP状态403-未找到预期的CSRF令牌。您的会话是否已过期?

基本上是这样的:

<form id="documentForm" class="card-panel" method="POST" enctype="multipart/form-data" action="<c:url value="/documents/signDocument?${_csrf.parameterName}=${_csrf.token}"/>">
  <input type="file" name="document"/>
  <input type="text" name="signer"/>
 </form>

当然,这是一个完全截取的表单版本,但请注意,CSRF参数是通过操作URL发送的。是的,我试着把CSRF参数放在一个隐藏的输入中,得到了相同的结果。

另请注意,此表单可以作为匿名用户访问

共有1个答案

乐正涵忍
2023-03-14

您面临的异常被抛出

org.springframework.security.web.csrf.CsrfFilter#doFilterInternal

在那里放置一个断点,您可以看到当前会话的预期csrf令牌,以及从标头或请求参数接收的令牌。

如果找不到正确的会话,或者会话cookie错误,也可能发生此错误,因此您可能需要检查是否存在此问题。

 类似资料:
  • 我是按照Spring Blog(https://spring.io/guides/tutorials/spring-security-and-angular-js/)的教程来的。但是我从一个现有的Spring应用程序开始,因此我不使用Spring Boot开始,我必须找到一种方法来实现XML和Java配置混合风格的组件。 这是我的CORS过滤器: 这是我的CsrfHeaderFilter.java

  • 我使用的是spring security 4.0.1。我一登录,它就会显示我的仪表板。当我点击某个东西时,它会显示以下错误页面: HTTP状态403-未找到预期的CSRF令牌。你的课程过期了吗? 我对它做了一些研究,它说我需要添加这个http。csrf()。禁用()。我无法添加它,因为它告诉我方法和类型httpsecurity是未定义的。 请在下面找到配置代码: 登录。xhtml MyConfig

  • 我用的是角度和节点。js与Auth0一起登录。我正在使用《快速入门指南》启动API。这是我使用Auth0 API的后端。 使用Auth0通用登录登录后,我会尝试访问我的后端,查看我是否获得授权。 这是检查我是否被授权的代码。 注意,我没有传递任何东西(我想我需要传递,但Auth0指南没有告诉我)。 在检查我是否被授权后,我得到一个错误,没有找到授权令牌。不知道我在这里干什么。我的后端是否未正确连接

  • 这是我昨天问的一个问题的后续问题:来自Django的Angular 4 CLI中的CSRF令牌 我有一个后端Django服务器和一个前端Angular应用程序。我正试图提交一个角度的Django后端与一个职位的形式。问题在于CSRF令牌。 这是Django视图: 这是角度分量: 当Angular和Django是单独的服务器(localhost:4200和127.0.0.1:8000)时,Angul

  • 我使用postMan,输入请求地址http://localhost:8011/umrah/oauth/token?client_id=client_2&username=1234567&password=123456&grant_type=password&client_secret=123456,点击send按钮,出现错误,在内存中工作正常,当我想使用Jdbc令牌存储时,想法控制台错误:找不到令

  • 本页描述了解释CSRF攻击的用例(16.1): https://docs.spring.io/spring-security/site/docs/current/reference/html/csrf.html 但是,如果用户确实登录了银行的网站,那么邪恶的网站难道不可能发出GET请求以获取新的CSRF令牌,并在根本不需要用户的情况下撰写帖子吗? 答案必须是否定的,否则CSRF令牌将毫无用处,但我