彻底搞懂cookie、session和token

一、Cookie

误解:cookie是缓存

1、什么是cookie?

        cookie的本质是一小段的文本信息,格式是字典key=value。cookie的名称不是固定的是由开发自定义的。

2、cookie的分类

        会话cookie:保存在内存,当浏览器的会话关闭之后自动消失;

        持久cookie:  保存在磁盘,只有当失效时间到期后才会自动消失;

3、cookie的格式

        {name:值,value:值, Domain:域名, Path:路径, expires:失效时间,size:大小,...}

4、查看cookie方式:

        1、查看当前网页的cookie: F12 -> application -> cookie;

        2、查看浏览器所以网页的cookie: 浏览器 -> 设置 -> 隐私设置与安全性 -> 查看所有cookie和网站数据

5、cookie鉴权(鉴定权限)的原理

        1、客户端第一次请求服务器B,服务器产生cookie,然后通过响应头的set-Cookie字段把cookie的信息返回给客户端;

         2、客户端从第二次开始访问服务器B,在请求头的cookie中都会自动带上该Cookie信息,从而实现鉴权。

6、Cookie存在的问题

        因为cookie保存在客户端,cookie的数据可以在客户端被截获。对于一些机密的数据,比如用户名和密码、银行卡号和支付密码、身份证号码登信息。

        所以演进了新的技术,使用Cookie保存不重要的数据信息,然后再使用Session来保存重要的数据。

二、Session

        session是通过cookie来传值的。

1、session鉴权原理

        当客户端第一次登录服务器的时候,服务器会创建一个session来保存用户的重要信息,并起名为sessionId(具体命名由开发决定,一般是一段比较长的经过加密的字符串)。然后通过cookie的鉴权方式实现session的鉴权。

2、session的问题

        造成服务器性能瓶颈

三、Token令牌

1、 token两种获取方式:

        1、登录之后,自动生成token

        2、通过一个特定的获取获取token的接口去获取token

后面的每一次请求都必须带上token实现鉴权。

2、token加码方式

        1、对称加密: EDS、AES

        2、双钥加密: RSA,一般用于金融项目里面做签名

        3、只加密不解密:MD5、SHA系列

        4、编码格式: Base64

3、token类型

        1、access_token:时效15分钟到2小时;

        2、refresh_token: 时效15天

面试题:cookie、session和token的相同点和差异?

相同点:都是用来实现身份验证(鉴权)的,都是由服务器产生的;

差异:

        1、cookie是保存在客户端,session是存储在服务器;

        2、session保存在服务器的内存中,默认是30分钟;token是保存在服务器的数据库中,持久的。

 

 

随着互联网的发展普及,网站应用程序越来越多,用户也越来越多。对于这些网站应用程序来说,如何记录用户的信息状态是一个非常重要的问题,因为只有这样才能提供更好的服务更好的用户体验。而cookiesessiontoken就是三种常用的记录用户信息状态的方式。 首先,cookie是一种存储在客户端浏览器中的文本文件,用于存储用户的一些信息。当用户在浏览器中打开一个网站时,网站服务器会发送一个包含一些信息的cookie给用户的浏览器。浏览器在接收到cookie后会以键值对的形式将它们存储在本地,然后在下一次访问该网站时再将cookie发送给服务器。服务器通过读取这些cookie中的信息,就可以知道该用户的一些状态偏好,从而提供更好的服务。 其次,session是一种服务器端技术,用于记录用户的会话状态。当用户第一次访问一个网站时,网站服务器会为该用户创建一个session,然后在服务器端存储用户的一些信息。当用户进行一些操作时,服务器端会根据该用户的session来判断其当前的状态权限,并根据这些信息进行相应的处理。当用户关闭浏览器时,与该用户相关的session会被销毁。 最后,token是一种用于验证用户身份的令牌。当用户输入用户名密码进行登录时,服务器会生成一个token,并将该token返回给客户端。客户端在后续的请求中需要带上该token,服务器收到请求后会根据token来验证用户身份,从而决定是否允许该请求。token不存储在客户端,而是存储在服务器端的数据库或者内存中,因此可以防止一些与cookie相关的安全问题,例如CSRF攻击 XSS攻击。 总的来说,cookiesessiontoken可以作为不同的方式来记录用户的信息状态,这些方式都有自己的优缺点,应该根据具体的需求来选择适合的方式。同时,为了确保安全性,应该采取一些措施来减少一些可能出现的安全问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值