关于PHP中session问题

可以从别的电脑上找session拷备到我电脑上来伪造原电脑用户登陆吗?
这是我一直没理解session的一点。。我说和理论上可以吗?

阅读 2.9k
4 个回答

你没弄明白session和cookie的区别. session默认是个会话文件, 存在服务器端的, sessid就是会话文件的唯一标识,也就是文件名. 一般情况是通过cookie来传递sessid的, 因为http协议是无状态的, 所以每次都得传, 才能确定上一个请求和下一个请求的是不是同一个访问者.

那既然用sessid可以标识会话的唯一性, 那你能拿到它,自然也就可以登录别人的网站了. 你自己可以做个实验验证一下, 把segmentfault网站的cookie中的phpsessid拷贝到另一个浏览器上, 你会发现另一个浏览器也登录了.

原理很简单,但是你要利用http协议的不安全来攻击别人, 操作起来就没有那么简单,你要嗅探局域网,如果网站用的是https,你就歇菜了.

客户端是通过会话COOKIE来获取服务器的SESSION内容的,所以有了这个会话COOKIE是可以通过其他途径同样获取到SESSION内容的。
当然首先这个SESSION还没被销毁。

可以从别的电脑上找cookie拷备到你电脑上来伪造原电脑用户登陆,一般xss就是用来干这个的。
客户端(也就是原用户的电脑)是没有session的,只有cookie,session存储在服务器中

存在本地客户端的是cookie不是session,cookie中包含sessionid。服务器收到包含sessionid的http请求后,对头字段cookie中的sessionid进行验证,并根据id取出对应的客户数据。

所以是可以伪造的不过不是伪造session而是伪造cookie

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题