Security 什么';检测用户是否从与平常不同的设备登录的最可靠方法是什么?

Security 什么';检测用户是否从与平常不同的设备登录的最可靠方法是什么?,security,authentication,cookies,browser,Security,Authentication,Cookies,Browser,我想我们都很熟悉facebook和google之类的网站是如何检测你是否使用了与平常不同的设备的,我想知道最可靠的方法是什么 我说的是旧的“看起来你是从不同的设备登录的”,然后当你确认etc时,它通常会向你发送一封电子邮件,询问你是否信任此设备 很明显,我们可以设置一个cookie,一个可以检查并记录每次访问的cookie,但是当用户注销时呢?我们有饼干吗 除了设置cookies,还有其他可靠的方法来“信任”一个“设备”吗?或者这是最好/最可靠的方法吗?检测设备更改的最可靠方法是创建浏览器/运行

我想我们都很熟悉facebook和google之类的网站是如何检测你是否使用了与平常不同的设备的,我想知道最可靠的方法是什么

我说的是旧的“看起来你是从不同的设备登录的”,然后当你确认etc时,它通常会向你发送一封电子邮件,询问你是否信任此设备

很明显,我们可以设置一个cookie,一个可以检查并记录每次访问的cookie,但是当用户注销时呢?我们有饼干吗


除了设置cookies,还有其他可靠的方法来“信任”一个“设备”吗?或者这是最好/最可靠的方法吗?

检测设备更改的最可靠方法是创建浏览器/运行浏览器的设备的名称。这是一个复杂的话题,要100%正确,有一些商业产品非常好,但并非完美无缺。几年前我在其中一家公司工作

现在至少有一个开源指纹识别项目。我没有用过,但它似乎覆盖了底座

仅仅设置cookie并不十分可靠,因为用户平均每30-45天清除一次cookie,除非您使用的网络尝试重新设置cookie(付费服务)。即使这些也不是完美的

仅仅使用IP地址是没有用的。一些设备在短时间内合法地拥有多个IP(家中的笔记本电脑、工作和星巴克或大多数移动设备),而有时单个IP由大量用户共享(星巴克或公司代理服务器后面的所有人)

更新

对类似哈希代码的思考

这是一个很复杂的话题。几年来我有一个小团队。我们做得非常好,但即使人们不是有意欺骗你,你也永远不能100%准确

  • 如果CPU发生变化,它可能是另一个设备
  • 同一物理设备可以有多个用户代理。设备上的每个浏览器都有不同的用户代理,浏览器的隐私模式也有不同的用户代理,熵要小得多
  • 对于给定的物理设备,字体的变化不会很快,尽管在移动设备上它并不是一个巨大的熵源(安装的字体很少,对于给定类型的设备,通常都是相同的字体)
  • 操作系统通常是稳定的,直到它突然改变。在您的情况下,如果每个设备在更新到Windows 10时都显示为新设备,这是否重要
  • 颜色深度将相当稳定。如果用户安装了新的图形卡,则可能会发生变化。这对你来说重要吗

如果您可以接受某些设备是新的,而事实上它们是相同的,反之亦然,那么这种类型的相似性哈希可能适合您。请注意,您永远不能使用这种类型的指纹来唯一标识需要正面标识(如访问安全数据)的设备。这对于做出概率决策(如提供适当的广告)非常有用。

@Eric提供了一个很好的答案,我还建议检查。他们可能还有一些指导。如果你在evercookie中使用技术,请在隐私政策中非常小心。一些公司因为在没有适当披露的情况下使用了一些更糟糕的技术而被成功起诉。嗯,客户JS的想法很有趣-我会等一段时间看看是否有人提供更多信息,但在我看来,指纹识别似乎是正确的方法。我猜您随后会使用客户端指纹将请求发送回服务器,并将其与某个存储值进行比较?
使用客户端指纹将请求发送回服务器,并将其与某个存储值进行比较
是。请注意,随着时间的推移,设备可能会慢慢变化(有时很快),例如,如果您检测到已安装的字体,并且用户安装了字体包,则指纹将发生变化。商业解决方案有算法来判断变化是否“足够大”,以猜测是相同的还是新的设备。同样,在同一台设备上使用不同的浏览器可能会很棘手。这是一个有趣的想法-客户端JS似乎会散列客户端数据以创建指纹,这意味着很难检测到相似性的变化…我想知道什么算法可以取代它,如果相似的输入产生相似的“散列”,我试着模拟一个具有“相似的输入>相似的输出”散列的版本,你怎么看?补充了一些想法。