黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图
您现在的位置: 黑客风云 >> 黑客文章 >> 黑客入门 >> 黑客常识 >> 文章正文
[推荐]说说session
        ★★★★★
说说session
文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2007-10-23
这几天mail list在讨论跨站获取cookie然后登陆网站的事情,昨天下午也发了一些邮件。后来看到还是有人理解不正确,而我刚好又网络坏了,发布出去邮件,快憋死了。今天早上一大早到公司就回复邮件,看来我这性子还真要改改。这里把我发的邮件贴出来,权当笔记了。下面是今天回复的邮件全文。

真的是怒了,昨天到今天一直都在说session,而且大多数是在造谣。昨天网络不通,发不出邮件,差点被憋死了。今天网络貌似不错,我来说说session,以后别老造谣了。

首先,session是由语言实现的,与web服务器无关,比如php的session是php语言实现的。

其次,session的内容是保存在服务器上面的,但是大家都知道session经常用来作认证辨别每个用户,他是怎么和客户端对应起来的?其实很简单,用户提交浏览请求的时候,cookie里面携带了一个session的字段,php就是SESSIONID。这样服务器就知道这个请求者的session保存在这个SESSIONID中,读取对应的数据就可以了。这个SESSIONID又怎么来的?下面再说。

再次,session有默认的超时时间,我记得asp貌似是20分钟,不太确定。所以如果跨站的时候,你拿到了cookie过了很久之后就不能登陆了,这也是以前传说动网论坛跨站了还不能登陆后台的原因,以前不是都传说是因为没法伪造session嘛?因为那时候没有 SessionIE类似的工具可以保持住session不过期。那时候如果刚好管理员被跨站了,还在后台没有退出,你使用这个cookie是可以登陆到后台的,因为你这个sessionid还没过期。

还有,SessionIE这类工具不是万能的。如果web程序写得比较好的话,被跨站的用户退出系统的时候,销毁了cookie和 session,攻击者就没法session的状态不断开。因为这个sessionid对应的session在服务端已经不存在了,虽然你提交了 sessionid,但是在服务端已经没有对应的session数据了,服务端程序取不到认证时需要的session内容,自然无法通过认证。

最后,这类工具可以使用php等支持socket的语言写cgi程序完成,asp的XmlHTTP应该会受到跨域的限制。就是说我在肉鸡上面放一个php程序,定期读取cookie列表,然后使用curl库加载cookie去访问对应的url,保持状态不丢失,这样你就可以关掉自己的 PC了。

最最后,session没什么很神秘或者奇异的地方,它的实质就是服务器端保存的一份数据而已,这份数据都有一个独一无二的ID,这个ID服务器会通过set cookie的方式告诉给客户端。然后客户端请求的时候把这个ID带上,服务端的session就可以和客户端关联起来了。
文章录入:cainiaowang    责任编辑:cainiaowang 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    VIP 专 区
    Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
    ICP备案:冀06009886