【问题标题】:Cookies instead of sessions? [closed]Cookies 而不是会话? [关闭]
【发布时间】:2013-09-08 10:13:42
【问题描述】:

我对会话的了解和了解是,对于所有会话 ID 劫持和其他东西,它们并不是真正可靠的。所以我决定我不会在我的项目中使用会话,我宁愿只使用普通的 cookie 并希望最好。

所以基本上我设置的有点像一个会话,但希望会更难破解。不幸的是,我似乎无法构建它难以破解。所以基本上我想这更像是一个安全问题,而不是 cookie 或会话之间的选择,但我似乎无法在任何纯文本中找到它。

我应该在会话 cookie 中散列什么以及如何散列?我读过散列算法可能会发生冲突,攻击者只需几秒钟就可以创建一个与 cookie 中实际存在的内容发生冲突的字符串,即使它可能不一样。我想我想问的是,将这些信息保存在 cookie 中的正确方法是什么,实际上我应该在那里存储哪些信息?

我知道基本上使用httpOnly 没有攻击者应该能够抓住一个cookie,但我想这个项目可能也可能不会使用SSL,所以有旧的点击方法可用。我知道我正在尝试在这里用木棍和石头建造一座摩天大楼,但仍然值得一试。

【问题讨论】:

  • 这只是开篇的错误。
  • 您害怕方法 A,因为您在某处读到它不可靠(不了解原因)。所以你转向接近 B,它本质上是不可靠的,现在问 SO 如何解决它。确实错了。
  • 这就是人们戴锡纸帽子的原因,他们读到了 CIA 的心灵探测器。
  • 您似乎很困惑,但是仅从问题中很难弄清楚您的困惑的根源。您能解释一下您要解决的具体问题吗? (例如,什么类型的攻击使您避免了会话处理?如果您正确设置系统,则不应发生会话劫持。)
  • 会话的概念相当简单:不是将内容存储在 cookie 中,而是将它们存储在本地,为它们分配一个标识符,然后仅将其存储在 cookie 中。最终结果是相似的,但是窥探连接的用户或攻击者无法读取或操作数据,并且您的流量更少。会话中可能会出现很多错误,例如使会话标识符易于猜测,但使用 cookie 也会出错(或者更糟)。老实说,我想不出任何攻击比针对会话更难针对 cookie 发起的攻击。

标签: php security session cookies


【解决方案1】:

完全避开会话的问题是某些值不应该是用户可设置的。例如,如果您有一个会话变量is_logged_in,它仅在用户成功进行身份验证时设置,那么使用 cookie 安全地实现它会很棘手。问题是用户可以设置自己的cookie(因为它来自客户端)并在没有密码的情况下登录。

现在,您可以通过将用户的凭据存储在 cookie 中并对每个请求进行身份验证来使用这种方法,但这也存在许多问题。首先,最好限制以明文形式向服务器发送凭据的频率;如果您使用会话,那么您只发送一次。其次,这种方法意味着密码以未加密的方式存储在本地计算机上(网站的存储密码通常使用主密码进行加密**)。因此,这种方法可以说会恶化用户的整体安全性。

可以通过登录来缓解这些问题,并让您的登录系统设置加密 cookie(使用对称加密)。这些将针对每个请求进行解密和身份验证,并且对于每个请求都可以安全地传输,并且存储在本地计算机 cookie 上会更安全。但是,在这里您增加了相当多的复杂性。

因此,我倾向于建议您坚持使用会话,但对出现的任何安全问题进行必要的阅读。


** 最近发现 Chrome 以明文形式存储保存的密码,无法使用主密码 (see here) 对其进行加密。这在网上引发了一场关于某些安全功能是否只是“戏剧”的争论(即只看起来安全而没有实际增加切实的额外安全性)。

【讨论】:

    【解决方案2】:

    实际上,您想用 cookie 替换 cookie(来自会话)。没有意义!

    【讨论】:

      猜你喜欢
      • 2017-07-22
      • 2017-08-12
      • 1970-01-01
      • 2012-09-27
      • 2018-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多