我知道这个问题已经被问过很多次,但坦率地说,我还没有看到满足我所拥有标准的答案。
所以我有一个 ASP.NET WEB API,它在提供用户/密码时发出访问 token (JWT)。目前请求来自 SPA 应用程序。我遇到的问题是存储访问 token ,以便它可以从 JavaScript 重新发送到 API。
到目前为止,似乎有 2 个常用的建议选项
但是这些都不是真正安全的,因为它们没有受到 XSS 和 CSRF 的保护。最重要的是,它使 token 易于访问。
你有什么建议吗?
最佳答案
网上商店易受 XSS 攻击。如果不是 HTTPONLY,Cookie 很容易受到 XSS 攻击。 Cookie 在非 STRICT 时很容易受到 CSRF 的攻击,即使它是 HTTPONLY 也是如此。
所以我认为我们可以将访问 token 存储在内存中 .问题是页面刷新之间没有持久性。因此,为了持久性,我们可以将刷新 token 存储在 Web 存储或 cookie 中,并且每当我们没有访问 token 时,我们可以通过刷新 token 静默获取一个新 token 。
使用身份服务器时,刷新 token 对任何未经授权的客户端都没有任何用处。
因此,如果他们 XSS 并使用刷新 token cookie 窃取刷新 token 或 CSRF,他们就无法冒充用户或获取访问 token 。
关于javascript - 如何以及在何处安全地存储访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35871196/