【问题标题】:Is there any benefit for storing JWT in both a cookie and local storage?在 cookie 和本地存储中存储 JWT 有什么好处吗?
【发布时间】:2019-06-22 01:42:09
【问题描述】:

我正在尝试使用 express 为 node.js api 编写身份验证系统。我注意到,如果我要使用 JWT 作为身份验证令牌,我有两个选择...

1.) 将令牌存储在 cookie 中,并添加 CSRF 保护。
2.) 让客户端在 Auth Header 中发送令牌并添加 XSS 保护。

我的问题是,将身份验证令牌存储在 cookie 中并让客户端将其发送到身份验证标头中以进行身份​​验证有什么好处?这样,如果由于某种原因 CSRF 保护失败,如果标头中没有身份验证令牌,则请求将失败。此外,如果 XSS 保护失效,请求仍需要 cookie 中的身份验证令牌。我想我的想法是这会提供更多的保护,它失败的唯一方法是通过成功的 XSS 攻击,然后是成功的 CSRF 攻击。

后续问题:CSRF 令牌是针对 CSRF 攻击的全面证明保护技术吗?

【问题讨论】:

    标签: node.js authentication jwt xss csrf


    【解决方案1】:

    首先我建议你先通过this回答。我希望我能在这里解决您对 CSRF 和 XSS 的疑问,以及我们应该使用 cookie 的原因和方式。

    其次,您使用 localstorage 和 cookie 的方法很好。我看到的唯一问题是 localstorage 不能跨子域使用。如果您使用 cookie 并将 cookie 域设置为 example.com(将 example 替换为您的组织域),它将在所有子域中有效。因此,通过您的授权服务器身份验证的用户可以无缝登录到 app1.example.com 和 app2.example.com。您将无法使用 localstorage 执行此操作。

    【讨论】:

    • 好的,太好了。谢谢!没想到子域之间的localstorage问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-10
    • 2020-12-21
    • 2016-12-18
    • 2013-07-21
    • 2020-12-26
    • 1970-01-01
    • 2014-11-28
    相关资源
    最近更新 更多