一、Cookie
- 什么是Cookie?
Cookie是在服务器产生的存储在客户端的一小段文本信息。格式是字典(键值对) - Cookie的分类
会话级:保存在内存,当浏览器关闭就会丢失
持久化:保存在硬盘,只有当失效时间到了才会被清除 - 如何查看Cookie
- Cookie如何实现鉴权(原理)
当客户端第一次访问服务器时,服务器就会产生Cookie,然后通过响应头的方式在Set—Cookie里面传输到客户端。客户端从第2~N次请求都会自动的带上这些Cookie。 - 弱点
Cookie保存在客户端,对于一些敏感信息(用户名,密码,身份证)不安全。 - Cookie关联
二、Session鉴权
因为Cookie不安全,所以引用了Session
当用户第一次访问服务器的时候,在服务端保存一个Sessionid,这个Sessionid是经过加密的,然后通过Cookie把这个Sessionid保存到客户端,然后请求服务器的时候只发送Sessionid
- Session鉴权方式:
- 弱点
虽然解决了Cookie的不安全问题,但是又出现了新的问题。由于用户的Session是保存在服务器,当用户量特别大的时候,会导致服务器崩溃。
三、token鉴权
当一个用户登录之后,就给他发送一个token令牌,下一次用户再次请求的时候,只需要带上这个令牌。token保存在文件或数据库内;可以通过抓包抓取;所以引出了加密。
- 加密
对称加密:DES AES
双钥加密:RSA
只加密不解密:MD5 SHA - token的分类
access_token:有时间限制,限制在15分钟
refresh_token:一般15天 - token鉴权方式
四、 Cookie、Session、Token的相同点和不同点?
- 相同点:都是用于做鉴权的,都是服务器产生的。
- 不同点:
- cookie存储在客户端,session存储在服务器,session的安全性比cookie高。重要的信息放session,不重要的放cookie
- session存在服务器内存,token存在服务器的文件或数据库中,token比session更省服务器资源,token只需要在服务器解密就行