【发布时间】:2016-02-10 21:13:16
【问题描述】:
我正在为我的应用程序使用 Spring Security。使用嵌入在表单中的 csrf 令牌进行基于表单的身份验证。用户通过身份验证后,会话 cookie 允许访问页面。 我需要针对我的应用中的 ajax 调用防止 csrf。
Spring 提供了一种方式,可以将令牌从服务器发送到客户端
<head>
<meta name="_csrf" content="${_csrf.token}"/>
<!-- default header name is X-CSRF-TOKEN -->
<meta name="_csrf_header" content="${_csrf.headerName}"/>
<!-- ... -->
</head>
需要将此令牌发回以进行 ajax 调用。
var client = rest.chain(csrf, {
token: $("meta[name='_csrf']").attr("content"),
name: $("meta[name='_csrf_header']").attr("content")
});
问题:可能的攻击者(另一个浏览器选项卡中的 HTML 代码)仍然可以从我的应用程序请求整个页面(这将起作用,因为会话 cookie 将随请求一起由浏览器自动发送)。来自服务器的响应将包含 csrf 令牌。现在攻击者可以使用这个令牌进行 ajax 调用。这不会造成安全漏洞吗?
如果我遗漏了一些东西来保护这个用例,请提出建议。
【问题讨论】:
标签: jquery ajax spring cookies spring-security