【问题标题】:Are (remember me)s possible for multiple computers?(记住我)是否可以用于多台计算机?
【发布时间】:2012-02-28 23:23:12
【问题描述】:

我问的原因是 b.c.这种情况:

Remember Me cookie 被盗。它从被盗的计算机中删除并放置在攻击者的计算机上。我见过的所有模型(这个one 得到了很多赞成)只会将攻击者的计算机视为被黑客入侵的计算机并将其记录下来。

如何防止这种情况发生?我有两种方式都不合适。

1.) 只允许一台记住我的计算机。 2.) 跟踪多台计算机并让用户监控他/她记住了多少台计算机。

有没有办法在计算机上跟踪一些困难的东西,比如以太网 MAC 地址?

编辑答案:

使用 MAC 地址。下面的链接提供了 IE 和 Firefox 的外部组件。需要 Safari 的外部组件。

SO Solution

添加澄清:

不是 IP 地址(很难更改)

【问题讨论】:

  • 这就是“记住我”cookie 的风险。没有办法完全防止这种情况。如果您认为这对您的应用程序来说风险太大,请不要提供“记住我”功能
  • @Pekka...每个以太网控制器(有线甚至无线)都有一个唯一的 MAC 地址...这可以解决问题...但是您可能需要用户安装软件。 ..Web 浏览器公司应该有权访问这个...对我来说这是常识...为什么没有 pull_mac_address() 作为我无法想象的标准 javascript 调用。
  • @Lawrence..这不是重复的,我已经在上面发布了那个链接。
  • @GuyMontag 更改 MAC 地址实际上非常容易。从这个角度来看,在 Internet 中使用特定的 IP 地址会更加困难,因为通常您会得到一个由您的提供商分配的地址。

标签: php remember-me


【解决方案1】:

将 cookie 绑定到服务器端的 IP 地址?

【讨论】:

  • 如果用户有动态地址怎么办?
  • 建议。应该是评论,真的。
  • 如果用户有动态地址,则不会被记住。这就是你付出的代价。
【解决方案2】:

你可以将上次记住我登录的ip设置成数据库(或cookie)

$_SERVER["HTTP_CLIENT_IP"]

【讨论】:

  • 如果您拥有大多数人都这样做的动态 IP,那么这将无法正常工作。
【解决方案3】:

在每次登录/访问时更改 cookie。如果计算机被盗,您登录后 cookie 会更改。被盗计算机有旧 cookie 被注销。

如果被盗计算机登录,那么他/她会更改 cookie。真正的用户被注销,然后必须重新登录,再次更改 cookie。

【讨论】:

    【解决方案4】:

    保存在用户代理的 cookie 哈希中 + 其他内容(如解析)。也许不是很安全,但比带有记住我信息的简单 cookie 更好,并且适用于具有动态 IP 的人。

    【讨论】:

    • 这是个聪明的主意...我将其称为计算机特征...足够多...而且您非常接近唯一标识符。
    【解决方案5】:

    我的方法是混合各种技术。我会使用包含有关已登录 PC 的信息的 cookie——浏览器、分辨率等,以及(默认情况下)IP。显然,我可以将这些与数据库中记录的最后一个值进行匹配,以确保带有 cookie 的机器没有改变。

    然后,我会为那些拥有动态 IP 地址的人提供一种方法,让他们选择退出会话的 IP 地址匹配,并提供大量适当的警告,表明这样做会大大降低保护他们帐户的安全性,当然。

    【讨论】:

      【解决方案6】:

      我喜欢在这种情况下查看 Windows Live Messenger,如果我登录桌面应用程序和 hotmail,我会收到一条通知,说我登录了多个地方 - 它询问我是否要注销的另一个位置。

      我喜欢的是它把控制权交给了用户,我不喜欢的是攻击者可以踢出真正的用户并完全劫持一个帐户。

      在我看来,这整个话题就像你这样做就该死,如果你不这样做就该死。

      让我们退后一步,谁能成为攻击者?好吧,任何人都 - 例如知道您的用户名和密码的前夫或前妻,他/她可以轻松攻击您的帐户,因为他/她知道您的所有信息。您永远无法完全保护自己,您更改密码但他/她可能也知道!

      我请您查看您的项目并评估“记住我”系统是否真的会为它带来的任何安全风险带来附加价值。

      现在,直接回答您的问题:

      1. 为用户生成一个唯一的密钥,将其插入您的数据库并将密钥写入您的 cookie,当 cookie 发送到服务器时,您根据数据库中的密钥对其进行评估,如果它是匹配的- 宾果游戏,您可以访问,如果没有,请运行注销脚本并销毁 cookie。

      2. 1234563如果它被设置为活动,那么只需记录事件并继续前进,但是,如果它被设置为死,你会杀死 cookie 并记录它被杀死。

      接下来,您可以显示此日志信息并为用户提供某些控制,例如,您可以允许用户将 cookie 设置为 dead,然后在下次读取 cookie 时将其杀死。

      1. 使用硬件说起来容易做起来难,但它是可行的。我发现最简单的方法是使用在本地运行的 Java 小程序,然后您可以检测硬件信息并将其发送到您的应用程序进行处理。对于您的普通网站,我个人认为这不值得,但它是可行的。

      另一种选择是将您的应用程序包装在Adobe AIR 之类的东西中,它可以检测您要使用的硬件信息。

      我希望这对你有帮助。

      【讨论】:

        猜你喜欢
        • 2018-04-20
        • 2010-09-24
        • 1970-01-01
        • 2011-04-19
        • 2010-10-31
        • 2016-11-28
        • 1970-01-01
        • 2013-02-10
        • 2011-10-04
        相关资源
        最近更新 更多