【问题标题】:What's a secure way to cache credentials for an in-browser ajax client?为浏览器内 ajax 客户端缓存凭据的安全方法是什么?
【发布时间】:2011-10-05 19:24:10
【问题描述】:
  1. 用户通过浏览器进入富网络应用
  2. 用户输入登录凭据。凭证被编码和缓存。 (凭据适用于将使用 xhr 与服务器交互的浏览器内 REST 客户端。)
  3. 用户执行各种任务/更新,每个任务/更新都会发出一个 ajax 请求,传递编码的凭据(通过 https 的基本身份验证)。
  4. 用户单击一个链接,该链接将他带到另一个资源(整个页面重新加载,而不是较小的 ajax 请求)。

由于整个应用程序使用内部 REST 客户端,每个请求都必须传递凭据。当他第一次访问该站点时,我没有问题提示用户输入这些凭据。问题是存储他的编码用户名/密码哈希的最安全方法是什么?如果这是一个单页网络应用程序,我想这可以安全地缓存在内存中。但是,由于用户有时会移动到其他资源(第 4 步),我希望允许他继续工作而无需再次进行身份验证。这必须涉及在某处缓存他的凭据(在 cookie 或 localStorage 中?)。无论如何,我需要访问他已经提供的凭据,以便客户端可以在每个请求中继续传递它们,即使在整个页面重新加载之后也是如此。

我担心以安全的方式执行此操作。有这方面的最佳做法吗?

【问题讨论】:

    标签: web-applications rest webclient basic-authentication


    【解决方案1】:

    我认为 LocalStorage 或 cookie 都是存储您的凭据的好地方……个人偏好是 LocalStorage。我使用几个基于 OAuth 的 Web 应用程序来做到这一点。

    您可以选择加密/解密进出您最终选择的信息:

    https://stackoverflow.com/questions/2299434/bcrypt-implementation-in-javascript

    顺便说一句,您可能需要研究 OAuth,因为规范中为您的确切用例定义了一个工作流。

    【讨论】:

      猜你喜欢
      • 2016-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-23
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多