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就失效了,相当于需要重新登陆】