【发布时间】:2011-08-07 04:38:30
【问题描述】:
我在cookie中放了一些认证信息。出于安全原因,我想防止有人将 cookie 复制到另一台计算机并使用它来登录。我该怎么做?
【问题讨论】:
标签: http authentication cookies security
我在cookie中放了一些认证信息。出于安全原因,我想防止有人将 cookie 复制到另一台计算机并使用它来登录。我该怎么做?
【问题讨论】:
标签: http authentication cookies security
您不应将身份验证信息放入 cookie 本身。设置 cookie 时,您应该创建一个会话,绑定到一些持久性存储 (sql/nosql)。
这基本上是一些与其他信息匹配的唯一随机生成的 ID。随机生成的 ID 作为 cookie 发送。在连续的请求中,您读取 cookie,并尝试从中获取用户帐户。
您可以对只能从您分配给它的 IP 地址访问的会话设置限制。您也可以将其绑定到用户代理(尽管这是隐蔽的安全性,但可以配置用户代理)。
【讨论】:
如前所述,如果您将身份验证信息以明文形式放入 cookie,则应认真考虑使用会话之类的东西。
一旦你有了会话,也许你可以将会话 ID 与后端的 IP 地址相关联,并检查会话 ID 和请求的 IP 地址是否匹配:这样,如果有人复制包含会话 ID 的 cookie 然后尝试远程访问站点,session id和IP不匹配,认证失败。
【讨论】:
您可以使用可靠的、公开的、众所周知的算法对信息进行加密。然后,如果 cookie 被复制,接收者将无法从中收集任何信息。
当然,这意味着您需要在服务器上进行加密和解密以确保其安全,否则(如果您使用 JavaScript)可以从 JavaScript 代码中获取私钥并用于解密 cookie。您还必须确定您收到的 cookie 是来自原始收件人还是副本。
由于您必须在服务器端执行此操作才能使其正常工作,因此您也可以使用会话。这就像一个 cookie,除了传递一个 ID 而不是实际数据(该 ID 用于在服务器上查找数据。)但是仍然可以复制会话 cookie 并使另一台计算机看起来是以原始用户身份登录,这就是 FireSheep 所做的。
【讨论】:
【讨论】: