我在cookie中放了一些身份验证信息。出于安全原因,我想阻止有人将cookie复制到另一台计算机并使用它登录。我该怎么办?
答案 0 :(得分:1)
如前所述,如果您将身份验证信息放入纯文本的cookie中,您应该认真考虑使用类似会话的内容。
一旦你有了sesssions,也许你可以将会话ID与你后端的IP地址相关联,并检查会话ID和请求IP地址是否匹配:这样,如果有人复制包含会话ID的cookie然后尝试要远程访问站点,会话ID和IP将不匹配,并且身份验证将失败。
答案 1 :(得分:0)
答案 2 :(得分:0)
您可以使用可靠,公开,众所周知的算法对信息进行加密。然后,如果cookie被复制,收件人将无法从中收集任何信息。
当然,这意味着您需要在服务器上进行加密和解密以保证其安全,否则(如果您使用的是JavaScript)私钥可以从JavaScript代码中获取并用于解密cookie。您还需要弄清楚您收到的cookie是来自原始收件人,还是它是一份副本。
由于您必须在服务器端执行此操作,因此您还可以使用会话。这就像一个cookie,除了传递ID而不是实际数据(ID用于查找服务器上的数据。)但是仍然可以复制会话cookie并使另一台计算机看起来像以原始登录方式登录,这就是FireSheep所做的。
答案 3 :(得分:0)
您不应将身份验证信息放入cookie本身。设置cookie时,你应该建立一个会话,绑定到一些持久存储(sql / nosql)。
这基本上是一些与其他信息匹配的随机生成的唯一ID。随机生成的ID作为cookie发送。在连续请求中,您阅读了cookie,并尝试从中获取用户帐户。
您可以在会话上设置只能从您为其分配的IP地址访问的约束。您也可以将它绑定到用户代理(虽然这是安全性,但可以配置用户代理)。