27. cookie和session有什么区别

2022-10-26 15:49:59 浏览数 (2)

1.cookie

首先我们从四个方面来简要理解一些cookie:

  • cookie是啥? 【是一个由程序员自己定义的字符串】
  • cookie从哪来? 【从服务器中来,程序员会在服务器的header中写入一个Set-Cookie字段,把对应的值会存在浏览器中,这个值可以在响应中看到】
  • cookie存到哪? 【cookie是按照域名来存的,每个域名都有自己的cookie,浏览器都是用域名来区分的,也就是每个浏览器的cookie都不一样】
  • cookie以什么形式保存? 【cookie以键值对的形式把用户数据存入客户端中】
  • cookie怎么用? 【可以用来识别身份信息,比如说一次访问后,后续访问相同的域名/地址请求,就会带上cookie,服务器会感知到这个cookie,进而就可以做出一些处理,就比如登录的时候,如果由cookie,就不需要重复登陆了】
  • cookie有什么缺陷? 【cookie是可以用来识别身份信息的,但是通过抓包就能很容易的看到身份信息在cookie字段里呈现出来,这就大大增加的信息泄露的风险,如果别人拿到了这个cookie字段,就会获取你的身份信息】
  • cookie缺陷的解决方式? 【引入session】

2.session

  • session以什么形式保存? 【session以键值对的形式把用户数据存入服务器中】
  • session怎么解决信息泄露问题? 【session会产生一个随机字符sessionId,可以保证每次生成的字符不一样,给浏览器返回的cookie中包含sessionId就可以了,拿着sessionId就可以找到对应的用户信息】
  • sessionId被别人“拿走”了怎么办? 【很多人的疑问在于“如果别人能获取到这个sessionId怎么办,不是会照样可以拿走用户的信息吗?” 其实session是有过期机制的,可以在session中保存该用户的session是何时建立的,以及何时要过期,就可以拿一个单独的线程不停的扫描session,只要发现过期就会自动删掉。如果别人拿走了sessionId,短期内是可以使用用户信息的,但是过了期限,session就自动删掉了,那么这个旧的session就失效了,相当于需要重新登陆】

0 人点赞