首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用双因素身份验证(如Google的系统)记住受信任的机器

如何使用双因素身份验证(如Google的系统)记住受信任的机器
EN

Security用户
提问于 2013-02-22 11:31:50
回答 3查看 18.2K关注 0票数 15

我们正在开发一个使用双因素身份验证的web应用程序。我们可能会尝试和模仿类似谷歌使用的东西,在哪里登录你输入一个用户名和密码,然后收到一个令牌在短信中被输入。

我们希望允许用户记住客户端机器,如果他们愿意的话,这样他们就可以登录30天,而不需要第二种身份验证方法。我们将获得哪些信息(通过网页的标题、请求等)我们可以使用哪一个来唯一地识别这个受信任的客户端机器?

显然,用户可以拥有多台受信任的客户端计算机,而且我完全期望,如果他们在同一台受信任的机器上使用两个不同的浏览器,那么每个浏览器都必须是独立的。

使用GUID在机器上设置cookie,这意味着这是可信的,这是不够好的,因为其他人可以复制cookie,并在自己的浏览器上创建cookie,以规避两个因素的身份验证。

EN

回答 3

Security用户

回答已采纳

发布于 2013-02-22 12:22:24

我不认为仅仅使用JavaScript/PHP (或其他一些服务器端语言)就可以唯一地打印/识别计算机。

记住,不管你做什么,恶意的人都可以将Chrome/Firefox用户数据目录复制到类似的系统(相同的操作系统,等等)。事实上,这是最容易做的事情,因为你不需要寻找饼干。JavaScript无法读取这些目录之外的任何内容,因此它们只是复制了系统。

但是,您可以使用Flash/JavaScript来进行指纹浏览器。不幸的是,如果用户安装字体/等等,浏览器指纹可能会发生变化。此外,您的用户将不得不允许Flash/JavaScript运行--现在由于最近的0天攻击,很多人禁用了JavaScript。你不想强迫你的用户不得不使用这些。无论如何,通过复制系统可以很容易地复制指纹(这需要时间,但并不太难)。

最后,两个因素都是关于(a)有密码和(b)对设备的物理访问。如果您在登录时允许某人在没有监督的情况下访问您的计算机,则(b)部分无论如何都会以另一种方式被破坏。

不过,要回答你的问题:

  • 你可以在曲奇里放一个独特的GUID。
  • 您可以在localStorage中添加另一个GUID
  • 您可以将浏览器用户代理请求头的一部分与帐户相关联。例如,我的用户代理是User-Agent:Mozilla/5.0 (X11; Linux i686) AppleWebKit/536.11 (KHTML, like Gecko) Ubuntu/12.04 Chromium/20.0.1132.47 Chrome/20.0.1132.47 Safari/536.11。从这里,您可以提取我的浏览器名(不会更改)、OS名称和版本(偶尔会更改),无论我的计算机是否是32位等等。
  • navigator.plugins --这是安装在浏览器上的所有插件的数组。但是,对于2要素身份验证来说,这可能不是个好主意,因为这种情况经常会发生变化。

请注意,所有这些都很容易被欺骗。对一个可能成为黑客的人来说,这只是额外的一圈而已。

同样,您可以尝试使用指纹技术来处理读取已安装字体列表等问题。同样,这是可以避免的,但这要困难得多。您还可以使用JavaScript将类似cookie的文件存储在计算机上的任意位置(不确定这是否是个好主意)。

编辑:正如Joel在注释中提到的,您还应该有一种撤销“受信任计算机”的方法(只需将数据库中的GUID分离)。当密码也被更改时,这也应该适用。

票数 11
EN

Security用户

发布于 2013-02-22 12:22:57

不要认为仅使用标准的web浏览器就可以安全地对任意客户端执行此操作。正如您所说,cookies不是授权计算机的安全选择。此外,cookie是按浏览器设置的,而不是每台计算机设置的。您可以尝试浏览器指纹技术,但这同样是针对浏览器而不是计算机的。请记住,HTTP请求(包括用户代理字符串)可以由恶意客户端任意设置。

票数 1
EN

Security用户

发布于 2020-10-08 23:20:21

您还可以在发出cookie时加密cookie中的用户IP地址,然后从那时起将cookie中的IP地址与传入的HTTP请求中的IP地址进行比较。当然,当ISP更改用户的动态IP地址时,这种情况会中断,但这种情况不会经常发生。

票数 0
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/31327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档