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

在Spring Security 3.2.0.发行版中,如何在没有标记库的纯HTML页面中获得CSRF令牌

蒯卓君
2023-03-14

今天,我从带有单独java配置依赖项的Spring Security 3.1.4升级到包含java配置的新3.2.0版本。CSRF在默认情况下是打开的,我知道我可以在重写的configure方法中使用“http.CSRF().disable()”禁用它。但是假设我不想禁用它,但我需要登录页面上的CSRF令牌,其中没有使用JSP标记库或Spring标记库。

我的登录页面纯粹是HTML,我在使用Yeoman生成的骨干应用程序中使用了它。如何将包含在HttpSession中的CSRF令牌以表单形式或标头形式包含在内,这样我就不会得到“未找到预期的CSRF令牌。您的会话过期了吗?”例外?

共有1个答案

淳于乐池
2023-03-14

您可以使用引用中概述的名为_CSRF的请求属性获得CSRF。要将CSRF添加到HTML页面,您需要使用JavaScript来获取请求中需要包含的令牌。

作为头部返回令牌比在主体中作为JSON返回更安全,因为主体中的JSON可以由外部域获得。例如,您的JavaScript可以请求一个通过以下方式处理的URL:

CsrfToken token = (CsrfToken) request.getAttribute("_csrf");
// Spring Security will allow the Token to be included in this header name
response.setHeader("X-CSRF-HEADER", token.getHeaderName());
// Spring Security will allow the token to be included in this parameter name
response.setHeader("X-CSRF-PARAM", token.getParameterName());
// this is the value of the token to be included as either a header or an HTTP parameter
response.setHeader("X-CSRF-TOKEN", token.getToken());

然后,JavaScript将从响应头获得头名或参数名和令牌,并将其添加到登录请求中。

 类似资料:
  • 问题内容: 我从具有单独的java config依赖项的Spring Security 3.1.4升级到了包含Java config的新3.2.0版本。CSRF默认情况下处于启用状态,我知道可以使用“ http.csrf()。disable()”在覆盖的configure方法中将其禁用。但是,假设我不想禁用它,但是我需要在登录页面上使用CSRF令牌,该页面上没有使用JSP标签库或Spring标签库

  • 问题内容: 我创建了一个包含很多字段的表单,用户可以在其中创建无限的字段。如果用户将更多时间花在CSRF令牌上,则它将过期,并且当他单击提交LARAVEL时,将返回错误CSRF令牌不匹配。那么,如何使用ajax调用获取新的CSRF令牌,以便可以在固定的时间间隔内更新CSRF?我无法刷新或重新加载表格。 问题答案: 只需将其添加到您的脚本中 并确保已将令牌添加到元标记中,如下所示。 希望这对您有用。

  • 本文向大家介绍如何在没有document.write的HTML页面中显示JavaScript变量?,包括了如何在没有document.write的HTML页面中显示JavaScript变量?的使用技巧和注意事项,需要的朋友参考一下 在JavaScript中使用Element.innerHTML可以在HTML页面中显示JavaScript变量,而无需document.write。 您可以尝试通过以下

  • > 我正在使用OWASP CSRFGuard 3.0保护这些Restful服务不受CSRF的影响。 当使用简单的超文本标记语言访问相同的Rest服务时-AJAX请求-CSRF令牌正在设置,我得到了响应: 下面的代码工作正常。 角度代码(我对角度代码非常陌生) 有人能建议我如何设置角形标记吗。 引自: 在寻找此问题的解决方案时,请阅读以下语句。 跨站请求伪造(XSRF)保护XSRF是一种技术,通过这

  • 问题内容: 这个问题已经在这里有了答案 : 从字符串中删除HTML标签 (31个答案) 4年前关闭。 是否存在可以完全删除HTML标签的正则表达式?顺便说一句,我正在使用Java。 问题答案: 您应该改用HTML解析器。我喜欢htmlCleaner,因为它为我提供了漂亮的HTML打印版本。 使用htmlCleaner,您可以执行以下操作:

  • 问题内容: 仍然无法使其正常工作。 我正在尝试回应: 但是我仍然找不到使标签“”和“”消失的方法,该怎么办? 问题答案: