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