从响应头获取CSRF令牌是否很危险?

时间:2020-08-22 02:00:04

标签: spring-security csrf-token

如果我们在服务器端使用模板引擎,则可以像这样将CSRF令牌传递给客户端:

<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>

(From this Article)

但是,如果我们根本无法使用模板引擎,则应使用如下响应标头将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);

(From this Article)

后一种方式,服务器应向客户端提供虚拟REST API,因为客户端无法在第一个HTML页面加载之前进行AJAX调用。

像后一种方法那样获取CSRF令牌是否很危险?

0 个答案:

没有答案