Eve*_*ert 18
很多好问题,并且对你提问很好.
首先..会话只是一个cookie."会话"不是HTTP堆栈的一部分.PHP恰好提供了一些便利,可以很容易地使用cookie,从而引入会话.PHP选择PHPSESSID作为cookie的默认名称,但您可以选择任何您想要的...即使在PHP中您也可以更改session_name.
攻击者必须做的就是抓住你正在查看的会话cookie,并在自己的浏览器中使用它.攻击者可以使用自动脚本或使用firebug执行此操作,您只需更改当前cookie值即可.
所以,是的,如果我有你的身份..如果你没有采取任何措施来阻止它,我可以偷你的会话.
然而..攻击者最难的部分是首先获取cookie.攻击者无法真正做到这一点,除非:
第一部分很难解决..你可以做一些技巧来识别启动会话的计算机(检查用户代理是否发生了变化,检查IP地址是否发生了变化),但非防水或不是那么好的解决方案.
您可以通过确保使用HTTPS加密所有流量来解决第二个问题.没有使用HTTPS的理由很少.如果您的网站上有"登录"区域,请使用SSL!
我希望这样能回答你的问题.我现在想到的其他一些指示:
如果您使用相同的IP并使用相同的浏览器,您所要做的就是复制会话ID(可能还有其他cookie值:不确定是否跟踪/比较浏览器特定的事物,如其代理字符串;这是实现依赖).
一般来说,有不同的方式来跟踪用户(最后它只是用户跟踪).例如,您可以在网页中使用cookie或一些隐藏值.您也可以在HTTP GET请求,Flash cookie或其他一些身份验证方法(或这些方法的组合)中使用值.
在Facebook的情况下,他们使用几个cookie值,所以我只假设他们使用这些值中的一个(例如'xs').
总的来说,没有真正的100%安全方式(例如由于中间人攻击),但总的来说,我会做以下事情:
哦,只是提一下:所有这些都不是特定于PHP的.它们可以使用任何服务器端语言(Perl,PHP,Ruby,C#,...)或服务器来完成.