session过期

2025-04-3019:47:32常识分享0

点击上方蓝色“视学算法”,选择“设为星标”

当我们在进行接口测试时,常常会遇到请求参数为token的情况。虽然大多数测试人员对token、cookie、session的区别有一定的了解,但为了更深入地理解它们,我们有必要再次探讨一下。

Cookie

Cookie是浏览器中用于永久存储数据的具体机制。它仅仅是浏览器实现的一种数据存储功能。

Cookie由服务器生成,发送给浏览器,并由浏览器以键值对(kv)的形式保存到某个目录下的文本文件中。当浏览器再次请求同一网站时,它会将该Cookie发送给服务器。

由于Cookie存储在客户端上,所以浏览器加入了一些限制以确保Cookie不会被恶意使用,并同时控制其占用的磁盘空间,因此每个域的Cookie数量是有限的。

Session

Session从字面意思上讲是“会话”。它类似于人与人之间的交流,通过某种特征来确认交谈者的身份。

通常,浏览器端的Session信息默认采用Cookie方式保存。Session的信息是临时保存在服务器上的,用户离开网站后Session会被销毁。

Token

Token是在客户端频繁向服务端请求数据时引入的机制。服务端不再频繁查询用户名和密码,而是通过生成并返回一个Token给客户端。

Token是服务端生成的一串字符串,作为客户端请求的一个令牌。当用户首次登录后,服务器生成一个Token并返回给客户端。以后客户端只需携带这个Token前来请求数据,无需再次携带用户名和密码。

Token的目的是为了减轻服务器的压力,减少频繁的数据库查询,使服务器更加健壮。

关于Token的身份验证

使用基于Token的身份验证方法时,服务端不需要存储用户的登录记录。其大致流程包括:

客户端使用用户名和密码请求登录。

服务端验证用户名与密码。

验证成功后,服务端签发一个Token并发送给客户端。

客户端收到Token后可以选择存储在Cookie或Local Storage中。

每次客户端向服务端请求资源时,需携端签发的Token。

服务端收到请求后验证Token,成功则返回数据,失败则提示重新登录。

关于存储与安全性

对于服务器上的Token存储问题,可以选择数据库或内存存储。如果担心查询数据库会成为系统瓶颈,可以考虑使用内存存储如Memcached或Redis。在客户端存储方面,为了确保数据安全,可以对Token进行对称加密存储或结合其他安全措施如签名算法来增加数据的安全性。

还需要注意网络层面的安全性。由于Token明文传输存在风险,因此建议使用HTTPS协议进行数据传输,并将Token放在POST请求体中。

其他注意事项

关于Session与Cookie的差异、Session的失效时间以及如何打破关于Session的常见误解等内容也需要在实施身份验证时予以考虑。这些因素都会影响到系统的安全性和性能。