cookie与session
1、cookie
将用户的信息通过cookie保存到本地浏览器
2、session
将用户敏感的信息通过session保存到服务器端,服务器通过MD5加密算法生成一个sessionID,保存到cookie中
3、二者的区别对比
Cookie机制是通过检查客户身上的"通行证"来确定客户身份的话, 那么Session机制就是通过检查服务器上的"客户明细表"来确认客户身份。 Session相当于程序在服务器上建立的一份客户档案, 客户来访的时候只需要查询客户档案表就可以了
3.1、存储位置
cookie存储在客户端
session存储在服务端
3.2、存储容量
cookie每个不超过4KB,一个站点最多20个
session没有上限,但为了服务器找想,会有session删除机制
3.3、存储方式
cookie只能保存ASCII字符串,并通过编码方式存储为unicode字符或者二进制
session可以存放任意类型的数据
3.4、隐私策略
cookie对客户端可见,不安全
session对客户端透明,不会有敏感信息泄漏的风险
3.5、有效期
cookie 可通过设置参数达到长期有效
session不会长期有效
3.6、适用场景
cookie保存在客户端,不占用服务端,对于并发用户多的网站很友好
session保存在服务端,如果用户过多,会消耗掉大量内存
3.7、跨域访问
cookie支持跨域访问
session不支持跨域访问
4、问答
4.1、问:session产生的session_id放在cookie里面,如果用户把cookie禁止掉,是不是session也不能用了呢?
禁止掉cookie后,session当然可以用,不过通过其他的方式来获得这个sessionid,比如,可以跟在url的后面,或者以表单的形势提交到服务器端。从而使服务器端了解客户端的状态。
4.2、问:为什么说session 比cookie更安全?
真正的cookie存在于客户端硬盘上的一个文本文件,如果两者一样的话,只要cookie就好了,让客户端来分提服务器的负担,并且对于用户来说又是透明的。但实际上不是。
session的sessionID是放在cookie里,要想功破session的话,得分两步:
第一要得到sessionID。攻破cookie后,你要得到sessionID,sessionID是要有人登录,或者启动session_start才会有,你不知道什么时候会有人登录。
第二取有效sessionID。sessionID是加密的,第二次session_start的时候,前一次的sessionID就没有用了,session过期时sessionid也会失效,想在短时间内功破加了密的 sessionID很难。session是针对某一次通信而言,会话结束session也就随着消失了。
————————————————
版权声明:本文为****博主「灵谷鱼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.****.net/weixin_42125310/article/details/106638077