博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
http session实现机制
阅读量:2397 次
发布时间:2019-05-10

本文共 744 字,大约阅读时间需要 2 分钟。

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”   

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

4. session id 应该是可以被监听到,然后伪造攻击的。

转载地址:http://djfob.baihongyu.com/

你可能感兴趣的文章
一个简单的bigfile tablespace无法扩展的案例处理
查看>>
sqlplus / as sysdba无法登录的奇怪报错
查看>>
最近处理的几个小问题_20160311
查看>>
今天的几点感悟_20160630
查看>>
一条报警信息的快速处理和分析
查看>>
揭秘手机空间不足的小尝试
查看>>
MySQL中的NULL和空串比较
查看>>
merge语句导致的ORA错误分析
查看>>
通过IP定位区域的SQL优化思路
查看>>
恢复控制文件避免使用resetlogs选项
查看>>
最近的几个技术问题总结和答疑(九)
查看>>
Data Guard高级玩法:通过闪回恢复switchover主库
查看>>
Oracle中的public
查看>>
技术长征路的开始
查看>>
Data Guard搭建困境突围(一)
查看>>
份内份外的事情
查看>>
关于Flashback的小测试
查看>>
中秋日记
查看>>
感谢那些曾经帮助过我的老师
查看>>
Linux命令ping,nc的学习
查看>>