如何解决从响应头获取CSRF令牌是否很危险?
如果我们在服务器端使用模板引擎,则可以像这样将CSRF令牌传递给客户端:
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
但是,如果我们根本无法使用模板引擎,则应使用如下响应标头将CSRF令牌传递给客户端:
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());
public static final String DEFAULT_CSRF_TOKEN_ATTR_NAME = HttpSessionCsrfTokenRepository.class.getName().concat(".CSRF_TOKEN");
CsrfToken sessionToken = (CsrfToken) request.getSession().getAttribute(DEFAULT_CSRF_TOKEN_ATTR_NAME);
后一种方式,服务器应向客户端提供虚拟REST API,因为客户端无法在第一个HTML页面加载之前进行AJAX调用。
像后一种方法那样获取CSRF令牌是否很危险?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。