【问题标题】:Identify computer using JavaScript使用 JavaScript 识别计算机
【发布时间】:2012-11-13 15:46:04
【问题描述】:

我正在构建一个 web 应用程序,我可以使用一种解决方案来唯一标识用户的计算机。

这样做的原因是,一旦用户登录到应用程序,他/她就可以启动与应用程序相关的多个会话(存储在 mySQL 中) - 但是,这些会话应该只能在会话是由哪个发起的。

我不能使用 cookie,因为应用程序应该允许用户关闭浏览器、重新启动计算机等,而不会有丢失用户会话的风险。

起初我以为我可以得到类似主板序列号的东西。 Naaah,不会发生的。

然后我想根据用户远程地址 + MAC 地址生成一个 MD5 哈希,直到我发现这只能使用带有 ActiveX 的旧版本的 IE。

然后我开始想,如果所有 Chrome 安装都有某种我可以使用的唯一浏览器 ID? ...没有找到任何有用的东西。

关于如何根据用户计算机生成唯一字符串有什么好的想法吗?

【问题讨论】:

  • @Quentin,不知道为什么人们不会使用用户名+密码来缩进用户...?
  • 请阅读全文...“原因是,____一旦用户登录到应用程序,他/她可以启动多个会话____”

标签: javascript


【解决方案1】:

你必须放松你的限制:即使使用browser digital print,你也不能保证不改变也不丢失UID。

我通常的解决方案是从服务器向浏览器发送一个 UID 并将其存储在localstorage 中,这种方法效果很好但不能保证。请注意,精通计算机的用户可以删除或更改它。但是如果用户不是你的敌人,这很好用。

更喜欢本地存储而不是 cookie 的原因是:

  • 没有过期
  • 没有工具可以“清理”它们,因为它们从一开始就是原始绑定的,因此没有 cookie 侵犯隐私的声誉
  • 当然是用于 javascript 应用程序的更清洁和更健全的界面

【讨论】:

  • 为什么localstorage 比 cookie 更好?与 localstorage 不同,cookie 可以在每个浏览器上运行。从您的 MDN 链接中:“存储对象是标准中最近添加的。因此它们可能不会出现在所有浏览器中。”
  • 不幸的是,%8 的互联网用户需要担心。 localstorage 不是为简单的任务而发明的,因为这个 cookie 是经典的方式。当然是国际海事组织。\
  • 它们是经典的方式,这是旧的方式,但我们现在有一个更清洁、更好的解决方案。话虽如此,我同意你的观点,cookie 是一个完全有效的解决方案,你的回答是好的。
  • 如果用户真的想搞砸UID,没关系。我只需要一个解决方案,以防止用户意外清除 cookie,从而使会话混乱。我会尽快考虑你的建议:)
【解决方案2】:

我不能使用 cookie,因为应用程序应该允许用户关闭浏览器、重新启动计算机等,而不会有丢失用户会话的风险。

重新启动计算时不会丢失 Cookie。 您可以使用 cookie。

【讨论】:

  • 用户可以删除它们,但是它们不会在浏览器和多个用户帐户之间共享。如果它们意外丢失,则几乎不可能恢复连接(以及该会话中存储的数据)。但对于大多数用途,cookie 应该没问题。我想我们需要更多背景信息。
  • @Thilo。我不确定所有这些担忧在这里是否有效。无论如何,如果他真的想以防弹的方式缩进用户,用户名+密码!
  • 是的,对于大多数用途,cookie 应该没问题。就像你说的,如果用户已经登录(使用用户名),那么你可以将这些东西链接到用户帐户。我想我们需要更多背景信息。
  • 每台电脑都需要运行app的某些部分,与其他用户/电脑分开,使用同一个app可以访问。 Cookie 可以删除 - 不够好 :)
  • @EibergDK。你为什么不给你的用户一个用户名+密码?您是否熟悉没有它就可以识别的网站\应用程序???
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
  • 2015-04-20
相关资源
最近更新 更多