伪造会议/饼干?

时间:2011-05-06 00:37:48

标签: php

我不确定$_SESSION如何在PHP中运行。我假设它是浏览器上的cookie,与服务器上的唯一密钥相匹配。是否可以伪造它并通过仅使用会话来识别用户的登录。

如果$_SESSION不起作用,有人可能会假冒cookie并绕过登录吗?

3 个答案:

答案 0 :(得分:21)

识别用户的唯一方法是与每个请求一起发送的伪随机值。 如果攻击者可以猜出要发送的正确值,他可以像其他人一样构成。

有很多方法可以让这更难:

  • 使会话ID更长(更多熵,更难猜)
  • 检查其他信息,例如用户代理(基本上更多是熵)
  • 显然:使用一个好的随机数生成器
  • 可以更快地使会话过期,以便在任何时候提供一组较小的有效会话ID
  • 经常更新会话ID,即使对于有效的ID
  • 也是如此
  • 使用SSL加密所有通信以避免彻底的cookie劫持

答案 1 :(得分:6)

默认情况下,PHP中的会话将数据存储在服务器上的文件中/tmp /并存储标识符cookie,通常为PHPSESSID(它将是十六进制数,例如f00f8c6e83cf2b9fe5a30878de8c3741 )。

如果您有其他人的标识符,那么理论上您可以使用他们的会话。

但是,大多数网站都会检查以确保用户代理是一致的,并且还会为每一些请求重新生成会话标识,以缓解此问题。

至于猜测会话,这是可能的,但极不可能。猜测信用卡号码(较小的字符池(0-9超过0-9a-f)和校验和来验证它更容易。当然,您还需要到期和安全代码。

答案 2 :(得分:1)

正确实施,会话ID非常长且随机到足以使猜测变得不可行(尽管如果你能够猜出某个特定用户的会话ID,那么肯定你将扮演该用户的角色)。但是你可以嗅闻和劫持会话 - 这就是firesheep的作用:http://en.wikipedia.org/wiki/Firesheep