`

聊聊Web应用的会话管理

阅读更多

http连接是无状态的,但web程序交互中经常又需要状态。所以目前流行的基本是Cookie,Session结合方式来管理,Cookie中会带一个会话标识,如果不用cookie,可能会将会话标识跟在地址栏后面。但也有不通过Session这样方式的,使用自定义的方式来维护状态。但有一点一定要注意,不能用递增的明码ID来做会话状态标识,危险性太大。下面举例说明。

 

前些时间,发现有个网站,是flash做的游戏,因为玩了游戏,有积分,积分呢可以抽奖,具体什么网站我就不透露了~~

 

于是,我就搞个程序玩,下了flash研究了下源码,配合firebug看看网络收发网络数据,惊奇的发现该网站维持用户会话是使用递增的ID,也就是说,我只要发个Cookie,带上userID,我就可以去提交积分了,连登录都不用登了。抽奖品也需要人品的,所以获不获奖是另外一码事,但写这样的程序还是有乐趣的~~

 

事后,我一想,如果是这样的话,那我岂不是可以伪造任何人的信息了么?因为Cookie可以用js来增删改的。

我随即验证了下,发现想法成立,然后我就再也不敢往下研究了。。。本来是娱乐玩,如果这样深入下去想搞破坏也不是难事。因为我可以遍历出所有用户的信息,然后,可以以这些用户的身份提交虚假信息。也就是说,我可以把中奖人的联系方式给改掉。提交成我的或者错误都有可能。但我不敢研究下去了。到此为止,这样下去,一是我品格不允许,二是可能会搞出事情来,毕竟我只是名普通的程序员,家有妻儿,我不要搞出什么事情来。。。

 

不知道是不是flash与后台交互时,这方面有什么障碍。我不太清楚网站方为何是用递增ID来维持会话的。

但不管怎样,请记住一点,千万不可用明码递增的标识来标识会话。太不安全,太危险了,后患无穷。至少也加个密是吧!

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics