【问题标题】:Storing credential-like information in javascript在 javascript 中存储类似凭证的信息
【发布时间】:2015-02-03 09:33:31
【问题描述】:

我有一个使用 javascript 登录的应用程序。经过身份验证后,服务器会向我发送一个令牌,我必须将其附加到我向服务器发出的每个 ajax 请求中,以便服务器知道我有资格询问信息。但是,我的应用程序不是单页应用程序,这意味着点击链接后,页面会重新加载,我需要重新进行身份验证。

是否可以安全地保存令牌并在页面重新加载后再次访问它?

我想到的选项是将其保存在 cookie 或本地/会话存储中,但是,我不确定这些是否足够安全。

您知道在客户端保存令牌的任何其他更安全的方法吗?或者您是否知道我提到的选项是否足够安全以存储此类敏感信息?

感谢您的任何建议。

编辑:我无法更改服务器端应用程序,令牌必须存储在客户端上。

【问题讨论】:

    标签: javascript ajax authentication


    【解决方案1】:

    如果您认为令牌是机密的,则不应考虑将其保存在客户端。

    即使您处于想要在客户端保存此类机密信息的情况下,您提到的内容也是正确的(Cookie、本地/会话存储)。保存前加密您的令牌。

    本地存储: 它正在您的域下保存数据。没有其他域无法访问您的信息的本地存储信息。

    如果我错了,请纠正我,如果我是正确的,请接受。

    【讨论】:

      【解决方案2】:

      本地存储:不是保存机密/敏感信息的更安全方式。

      Cookies:关于窃取 cookie 和防止跨站脚本的文章很多。

      会话存储安全,但问题是您在服务器端使用的是哪种技术。 是 NodeJS 还是 PHP 还是别的什么??

      我已经使用 NodeJS 和 PHP 进行身份验证。

      使用Express.js,您可以为每个用户维护一个会话,并检查/验证每个请求/页面加载并验证它是否是有效的用户/请求。 它还提供活动会话检查,即,如果用户有时处于非活动状态,会话将被自动销毁/清除/清理。

      除了使用 passport.js,您还可以实现此功能,但这取决于您的要求。

      检查这个LINK

      【讨论】:

      • 在服务器端,它是 Microsoft 编写的应用程序,我无权访问二进制文件,因此无法更改服务器端。我必须将令牌存储在客户端。
      • 我使用了另一种选择,但我不知道它是否更安全。我创建了一个<input id="user_id" type="hidden" value="2j3434hk23h"> 元素并将该元素附加到文档中的任何位置。现在我可以相应地访问/修改/更新。
      猜你喜欢
      • 2011-12-13
      • 2016-11-19
      • 2016-01-18
      • 1970-01-01
      • 1970-01-01
      • 2016-08-07
      • 2022-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多