我不太确定$_SESSION
如何在PHP中工作。我认为它是浏览器上的一个cookie,与服务器上的唯一密钥匹配。是否有可能通过仅使用会话来识别用户的通过登录来伪造该通知。伪造会话/ Cookies?
如果$_SESSION
不能这样工作,有人可能会假冒cookie和绕过登录?
我不太确定$_SESSION
如何在PHP中工作。我认为它是浏览器上的一个cookie,与服务器上的唯一密钥匹配。是否有可能通过仅使用会话来识别用户的通过登录来伪造该通知。伪造会话/ Cookies?
如果$_SESSION
不能这样工作,有人可能会假冒cookie和绕过登录?
是的。
唯一标识用户的是随每个请求一起发送的伪随机值。 如果攻击者可以猜出正确的发送值,他可以作为别人冒充。
有不同的方式,使这个困难:
默认情况下,PHP中的会话将数据存储在服务器上的文件中(/tmp
),并存储标识符cookie,通常为PHPSESSID
(它将是一个十六进制数字,例如f00f8c6e83cf2b9fe5a30878de8c3741
)。
如果你有他人的标识符,那么你理论上可以使用他们的会话。
但是,大多数站点会检查以确保用户代理是一致的,并且还会重新生成会话标识符,以减少这些问题。
至于猜测会话,这是可能的,但极不可能。猜测信用卡号码会更容易(较小的字符池(0-9
超过0-9a-f
)以及验证它的校验和)。当然,你也需要过期和安全代码。
正确实施,会话id非常长且足够随机,使猜测不可行(尽管如果你能够猜测特定用户的会话ID,那么是的,你将作为该用户)。然而,你可以嗅探和劫持会议 - 这是firesheep所做的:http://en.wikipedia.org/wiki/Firesheep
eek。这给了我一个非常难堪的恐慌。我会更仔细地从现在开始,通过cookies和会话吐出什么。 – Partack 2011-08-03 02:57:30
+1好的列表:) – alex 2011-05-06 00:46:02