session

session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。 

当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识 - 称为 session id,如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照session id把这个 session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个 session id将被在本次响应中返回给客户端保存。 

sessionid 存在于浏览器内存的cookie中 或者url中

session存在内存中与sessionid有者对应的关系

与cookie存在硬盘中不同

cookie

c请求

s 回应 setcookie 

c 存储cookie 硬盘 或内存(会话cookie

对服务器会话 含有cookie

s接受识别cookie


session



保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发挥给服务器。一般这个cookie的名字都是类似于SEEESIONID,而。比如weblogic对于web应用程序生成的cookie。

如果cookie禁用 php层会自动重写url对应cookie

php.ini中,把session.use_trans_sid设成1,那么连接的后面就会自己加sessionid


session_id是浏览器内存的,默认生命周期为浏览器生命周期
即使用被盗,如果你用另一个浏览器,则会自动生成一个新的session_id
所以被盗可能为0
也就是说,如果在同一机换一浏览器,或在不同机用同一浏览器,session_id自动分配新的


session_id是存在有效期的,而且是乱数生成,基本不可能被推测出来。
PHP默认下,session_id虽然被保存在cookie,但是,当网页被关闭之后,session_id也会消失,这是其一,
其二,服务器上的session是存在有效期的,超过一段时间没有访问,就算得到原来的session_id也是无效的。


大量的用户访问 使用session会对服务器造成影响。


而cookie是客户端而言的 

服务器发送header包含setcookie:abc

然后客户端本地创建一个cookie项:abc

这样每次访问 数据库里存储abc到了哪里 以此来判断用户偏号 

而服务器本身是不存储cookie 所以cookie判断登入状态是需要验证的

cookie是在客户端自己保存信息的 

Set-Cookie: name = VALUE;


SessionID是通过复杂算法产生的长整型数据 几乎没法伪造 所以session保持登入状态是不需要验证的

而cookie是保存在客户端 服务端没有 如果用来判断登入状态 就需要服务端数据库里存储

然后判断 因为有着相关性 所以是可以伪造的

所以一般cookie多是 用来自动补充用户名密码 但是却不会用来自动登入


sessionid被截取了呢?安全性也会有问题 但是如上面所述

安全性问题肯定会有的 不过非常小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值