首页 > 其他 > 详细

cookie和session基础原理介绍

时间:2021-04-25 00:15:47      阅读:20      评论:0      收藏:0      [点我收藏+]

前言

由于http协议是无状态协议,它并不储存关于客户的状态信息,就像服务器会完全忘记之前发生的事情一样。

然而在实际的使用中,当你登录某个购物网站时,你的购物车里的东西会一直保存下来,当你登录一些视频

网站时,它会根据你过去的喜好给你推送类似的视频。实现这些功能,就涉及到了cookie和session。

一,cookie

cookie是servlet规范下的一个类,用于储存与用户有关的信息,写入响应头中交还给浏览器

1.原理简介

比如你去理发店,由于是第一次去,所以你去开了个卡,上面记载了你的姓名信息和存放的金额,还有记录

你喜欢的发型等等,然后把会员卡交还给你。当你第二次去那家理发店时,只要将卡一刷,不管是不是之前

的理发师都了解了你喜欢的发型以提供针对的服务,以及结束时自动从卡里扣钱。

技术分享图片

 

 

 

 在这里,客户就是浏览器,理发店就是某个服务器,cookie就是里面的会员卡。

当第一次登录后,服务器就会把用户信息存入cookie中发给浏览器,浏览器自动保存cookie,当下次访问同

一个服务器时,浏览器将无条件的将cookie写入到请求头发送过去,这样服务器就能获得客户的信息,提供

更好的服务。

2.销毁时机

默认情况下,cookie在浏览器关闭时就会被销毁,当然也可以通过cookie.setMaxAge()来设置

在硬盘上的存活时间,从而不会随浏览器关闭而销毁。很多网站的记住登录信息就是这样实现,而很长一段

时间过后再去访问就发现要重新登录,这就是cookie被销毁的缘故,在浏览器设置里清除所有的cookie也是

这样的效果。

3.好处及弊端

通过图解的方式可以看出,cookie可以传送给同一个服务器下的不同servlet对象,也就是说cookie可以作为

多个servlet之间数据共享的一个方式。然而,作为存放用户重要信息的一个方式,cookie能存放在用户的硬

盘上,也就是给人提供了修改的可能,比如账户余额这种重要数据,如果可以随意修改问题就很严重,同时

别有用心的人也可以通过抓包等方式获取用户访问服务器的cookie,来获取用户的敏感信息,以及代替用户

访问服务器(可以通过将cookie和用户ip与浏览器种类绑定来验证cookie的安全性,但是ip与浏览器同样可

以被伪造),相对而言,接下来的session就安全的多。

二,session

和cookie不同,session是servlet规范下定义的一个接口,有servlet-api.jar提供了实现类

1.原理简介

还是类比理发店,你第一次访问建立了一个新卡,但不同的是理发店只给了你一把钥匙,然后把你的新卡放入

了店里的一个保险柜中,只有你的钥匙可以打开。当你下次去理发时,你只要带上钥匙,理发师就能通过保险

柜中记录的信息来给你提供服务。

技术分享图片

 

这里,session就是那个保险柜,用于存放用户信息,而那个钥匙就是sessionid,本质是一个cookie,但其中不

包含用户的任何信息,sessionid在用户访问服务器页面就会由服务器自动分配创建,而session来存放的用户信

息是存放在服务器的内存上的,在互联网传播过程中就降低了用户信息被获取的风险。

2.销毁时机

sessionid本质上是cookie,在没做规定下浏览器关闭则销毁,而session则是长时间没有调用由服务器自行销毁

一般tomcat默认时间为20分钟,或者是服务器关闭就销毁。注意,一旦中间对session有调用那么该session重新

计时。

3.好处及弊端

同cookie一样,session是一种多个servlet之间数据共享的方式,而且安全性上比cookie优良的多。个人感觉sessionid

貌似也不是很安全,中间人同样能获取sessionid来向服务器套取用户信息或者是恶意登录,现在还有一种禁用cookie

的方案来实现session,可以说是提高安全性的一个好方式。

篇幅有限,这里就只对cookie和session的实现原理简单介绍,以后会针对两者做详细解析。

 

 

cookie和session基础原理介绍

原文:https://www.cnblogs.com/ssr1377/p/14698150.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!