面试中的cookies、session、token

前言

一般在面试的时候,经常会被问到关于什么是cookies、session、token,大多数面试官可以通过这几个概念基本上了解到你对接口请求方面是否了解或者工作中掌握的熟练程度。

看似很小的问题,但是背后却藏着大大的阴谋,今天跟着小编一起来了解下到底什么是cookies、session、token。

http无状态

我们都知道目前的http的协议是超文本传输协议,是属于服务器传世超文本到本地浏览器的传送协议,但是很多都不清楚http的无状态是什么意思。

其实无状态协议就是类似客户端发送一次http请求完成后,客户端再次发送一次http请求后,http协议不清楚第一次发送的和第二次发送的协议是否属于同一个客户端,这个问题就引入了我们今天的话题,关于三者的区别。

cookies

cookies是一种在客户端存储用户信息的机制。

当用户登录网站时,服务器会生成一个新的cookie发送给客户端浏览器,浏览器会把这个cookies保存在对应的文件内,并要求客户端浏览器在后续请求中将cookie发送回服务器。服务器这个时候就会根据cookie的信息进行识别用户身份。

因为客户端存有cookies值,那么就会造成一些风险,可能会被他人窃取,所有cookies在客户端存放有时间限制,当时间到期后会自动消失,当用户下次再次登录时,又重新会生成新的cookies值。

cookie的格式显示

一般cookies会以键值对的形式进行显示如:

代码语言:javascript
复制
{name=value; expires=date; path=path; domain=domain; secure}

(左右滑动查看完整代码)

其中:

  • name表示cookie的名称
  • value表示cookie的值
  • expires表示cookie的过期时间
  • path表示cookie的路径
  • domain表示cookie的域名
  • secure表示cookie是否只能通过安全的https连接传输

cookie存在问题

我们通过上面的了解cookie的内容,应该可以大致可以了解到cookie存在一些问题。

1、隐私问题:cookies会记录用户的个人信息和行为,会泄露给第三方用于投放广告或个人信息进行泄露。

2、安全问题:cookies本地端或浏览器上都可以很容易查到,很容易会被其他人盗用,造成一些数据损失或者安全损失。

3、体验问题:每个cookies多多少少都会存在一些大小限制,当我们访问的网站过多,就会存储不同的cookies,这样可能会影响到用户的浏览体验。

4、过期问题:每个网站对于账户的cookies过期时间设置都不一样,这样可能会导致用户登录信息进行泄露。

利用cookies可以做什么

就拿我们测试行业来说,在做自动化测试的时,保证cookies没有过期的前提下,可以将对应的cookies添加到浏览器中,或通过脚本语言进行模拟cookies发送给服务器,这样就能实现用户的登录。

这样对于我们自动化测试绕过了一些验证码和一些繁琐的过程。

session

session是一种在服务器端存储用户信息的机制。

当用户登录网站时,服务器会创建一个Session ID并将其存储在cookie中,然后将Session ID发送给客户端浏览器。客户端浏览器将Session ID存储在cookie中,并在后续请求中将其发送给服务器。服务器会根据Session ID可以识别用户身份,并将用户的数据存储在服务器端的session中。

session的格式显示

session的格式通常是已键值对的形似进行保存,每个键值对表示一个变量和对应的值,我们可以通过F12中在Storage中进行查看,当然每个session保存路径可能不一样。

session存在的问题

其实关于session也有一些存在的问题,小编简单介绍几种

1、安全性问题:session虽然存储在服务器端,但是session ID存储在客户端上,可以通过获取session ID进行模拟登录。

2、性能问题:session存在服务器的内存中,如果session的数量越来越大,会占用大量的服务器内存资源,从而降低了性能。

3、会话过期问题:session也有一定的有效期限制,当用户长时间不进行操作或者关闭浏览器,其中session就会过期,导致用户又需要重新登录。

利用session可以做什么

继续对于我们测试来说,可以通过session进行模拟登录,从而跳过验证码和一些繁琐的操作,直接模拟进入到登录后想要进入的页面当中。

token

token是一个用于验证用户身份的字符串,通常由服务器生成并返回给客户端。

在Web应用程序中,token通常是包含用户身份信息的加密字符串,可以用于验证用户在访问受保护的资源时是否有权限。token可以被用于各种场景,例如用户登录、API访问、密码重置等。

token的格式显示

token格式通常是一串由字母、数字和特殊字符组成的字符串,长度可以是任意的。一般token都是通过一些有效信息进行加密生成的字符串。

token存在的问题

1、过期问题:token存在一定的有效期限制,如果超过了有效期,就需要重新获取新的token,否则用户无法正常使用。

2、模拟登陆:通过了解token的实现机制,我们可以通过抓包后通过脚本语言模拟token生成,从而完成实现模拟登陆。

利用token可以做什么

token一般是通过加密的方式进行生成的,如果想要使用token,我们需要了解token的生成原理,然后通过一些脚本语言模拟token的生成过程,从而达到我们通过token模拟登录来做自动化测试。

总结

小编通过这么多的文字信息,大致介绍了cookie、session、token的内容和目前测试人员可以通过这些完成哪些操作,从而辅助我们进行工作。

我们日常生活中的接口测试中光登录其实就是通过这三个进行实现的。文章中太多的文字介绍,具体的还需要大家结合自己公司的项目进行了解,进行动手操作,这样才能更加得心应手。

感谢您的阅读,希望本文章可以对您带来帮助。

End

FunTester原创专题推荐~

  • 900原创合集
  • 2021年原创合集
  • 2022年原创合集
  • 接口功能测试专题
  • 性能测试专题
  • Groovy专题
  • Java、Groovy、Go、Python
  • 单测&白盒
  • FunTester社群风采
  • 测试理论鸡汤
  • FunTester视频专题
  • 案例分享:方案、BUG、爬虫
  • UI自动化专题
  • 测试工具专题

-- By FunTester