单页面Web应用程序中的CSRF保护

时间:2018-01-31 09:38:18

标签: javascript node.js csrf csrf-protection

我的申请结构如下

1)在api.mydomain.com中运行的API服务器

2)在www.mydomain.com上运行前端VUejs应用程序

所以我通过httponly cookie实现了身份验证。

但很少与CSRF令牌实现相混淆

Mysolution

1)。CSRF来自网址的令牌/getCSRF

2)将其存储在localstorage中。

3)随每个请求发送。

但我不认为有人提出建议的好方法吗?

1 个答案:

答案 0 :(得分:2)

第一件事:随意结合使用基于会话的身份验证和 httpOnly(防止您的会话 cookie 通过 XSS 攻击被劫持)cookie。这没什么不对的。

在某个动作(例如登录)之后,生成 CSRF 令牌并将其存储在 cookie 中(使其可被 JavaScript 访问)。您可以使用服务器机密对令牌进行 HMAC,以便攻击者无法重新创建 CSRF。

确保 CSRF 将在每个请求中作为 cookie 发送,但诀窍是发送它并期望它在自定义标头中(例如 X-CSRF-HEADER)。最后一步是检查其有效性。

关键思想是攻击者在执行 CSRF 攻击时无法附加自定义标头。