注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

gmd20的个人空间

// 编程和生活

 
 
 

日志

 
 

http session实现机制学习  

2010-10-29 00:51:45|  分类: 程序设计 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

最近想设计思考一种服务器的登录管理机制,想起这个,就看了看,也许能够得到某些启发。

http协议是一种无状态的协议,服务器本身并不能区分出每个会话来。不过各种网页编程语言想asp.net php java等都是实现了自己的一套session管理机制的。我搜索了一下网上资料,总结一下看到的原理说明,大概有以下几点:

1. 服务器需要在 客户端与服务器间不停的传递session id的。会话状态的维护就是要靠增加这个来做到的吧,把http没有的功能扩展了一下。 传递保存的办法有 cookie 或者get 方法参数,隐藏form的属性,http协议的头部 等各种各样的办法。具体可以参考网上文档。

2. Session id的生成。

    服务器需要一个很好的办法来区分不同的客户端的会话,所以也要为每个客户端生成一个不同session id了,避免别人伪造等。 根据网上文档 php实现大概的生成方法是:

hash_func = md5 / sha1 #可由php.ini配置
PHPSESSIONID = hash_func(客户端IP + 当前时间(秒)+ 当前时间(微妙)+ PHP自带的随机数生产器)

3. session在服务器端的保存功能。

各个语言平台里面都允许为session保存大量的数据的吧。保存的位置或者说办法也有很多

(1) 保存平台实现的内置管理器

(2) 保存于数据库    。 这个就可以在不同的机器上共享了。

(3) 扩展实现,保存于memcached等高性能服务里。 比如某牛人为tomcat实现的memcached session保存机制 “Use MemCacheStore in Tomcat”    http://research-and-destroy.de/blog/2008/10/10/use-memcachestore-in-tomcat-for-storing-session-in-memcached-server/

           这种应该性能就非常好了,而且session可以在集群系统不同机器上面共享访问了。

4. session id 应该是可以被监听到,然后伪造攻击的。 网上截获你的session id,然后就可以以你的身份访问网站了,很危险啊! 还是用https好点啊,如果安全要求比较高的话。

参考文档:

ASP.NET 中 Session 实现原理浅析 [1] 会话的建立流程 http://www.orsoon.com/article/article_12554.html

PHP中Session ID的实现原理 http://blog.sina.com.cn/s/blog_461c24d50100i44g.html

理解HTTP session原理及应用 http://www.cnblogs.com/athrun/archive/2008/11/26/1341442.html

  评论这张
 
阅读(1279)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017