使用Spring Security 3.2.0.RELEASE,如何在纯HTML的页面中获取CSRF令牌而没有标记库

 禁令2502861143 发布于 2023-02-07 12:08

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

我的登录页面纯粹是HTML,我在使用Yeoman生成的Backbone应用程序中使用.我如何在表单中或作为标题包含HttpSession中包含的CSRF令牌,这样我就不会得到"未找到预期的CSRF令牌.您的会话是否已过期?" 例外?

1 个回答
  • 您可以使用参考中概述的名为_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将从响应标头获取标头名称或参数名称以及令牌,并将其添加到登录请求中.

    2023-02-07 12:10 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有