javascript - 如何以及在何处安全地存储访问 token

标签 javascript c# asp.net jwt

我知道这个问题已经被问过很多次,但坦率地说,我还没有看到满足我所拥有标准的答案。

所以我有一个 ASP.NET WEB API,它在提供用户/密码时发出访问 token (JWT)。目前请求来自 SPA 应用程序。我遇到的问题是存储访问 token ,以便它可以从 JavaScript 重新发送到 API。
到目前为止,似乎有 2 个常用的建议选项

  • HTML5 网上商店
  • cookies

  • 但是这些都不是真正安全的,因为它们没有受到 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/

    相关文章:

    c# - 为什么 lambda 中的短路不起作用?

    c# - 更新 LockScreen 背景

    c# - Server.MapPath 和 HostingEnvironment.MapPath 有什么区别?

    asp.net - 获取排序列表中的最大键

    javascript - 如何为 react-router (redux) 中的所有全局状态更改添加默认加载栏?

    javascript - javascript 中基于对象的开关替代方案

    javascript - 在 JS 中调用二维数组时一直未定义

    javascript - javascript中日期时间验证的正则表达式

    c# - 从另一个类的捕获中优雅地返回到 .aspx.cs 文件

    asp.net - 将 Azure Functions 升级到 5.0 : System. UriFormatException