首页 > 其他分享 >什么是cookies,session,token(面试必问)

什么是cookies,session,token(面试必问)

时间:2023-05-17 15:56:00浏览次数:32  
标签:cookies 必问 token session cookie 服务器 客户端

前言

一般在面试的时候,经常会遇到关于什么是cookies,session,token,大多数面试官可以通过这几个概念基本上了解到你对接口请求方面是否存在了解或者工作中掌握的熟练程度,看似很小的问题,但是背后缺藏着大大的阴谋,今天跟着小编一起来了解下到底什么是cookies,session,token。

http无状态

我们都知道目前的http的协议是超文本传输协议,是属于服务器传世超文本到本地浏览器的传送协议,但是很多都不清楚http的无状态是什么意思,其实无状态协议就是类似客户端发送一次http请求完成后,客户端再次发送一次http请求后,http协议不清楚第一次发送的和第二次发送的协议是否属于同一个客户端,这个问题就引入了我们今天的话题,关于三者的区别。

cookies

Cookies是一种在客户端存储用户信息的机制。当用户登录网站时,服务器会生成一个新的Cookie发送给客户端浏览器,浏览器会把这个cookies保存在对应的文件内,并要求客户端浏览器在后续请求中将Cookie发送回服务器。服务器这个时候就会根据Cookie的信息进行识别用户身份。因为客户端存有cookies值,那么就会造成一些风险,可能会被他人窃取,所有cookies在客户端存放有时间限制,当时间到期后会自动消失,当用户下次再次登录时,又重新会生成新的cookies值。

cookie的格式显示

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

{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的内容和目前测试人员可以通过这些完成那些操作,从而辅助我们进行工作。我们日常生活中的接口测试中光登录其实就是通过这三个进行实现的。文章中太多的文字介绍,具体的还需要大家结合自己公司的项目进行了解,进行动手操作,这样才能更加孰能生巧。感谢您的阅读,希望本文章可以对您带来帮助。

标签:cookies,必问,token,session,cookie,服务器,客户端
From: https://www.cnblogs.com/qican/p/17409004.html

相关文章

  • Cookie、Session、Token的区别
    什么是CookieCookie技术的产生源于HTTP协议在互联网上的急速发展。由于HTTP是无状态的会话,在互联网飞速发展的今天,人们进行更复杂的互联网交互活动,就必须同服务器保持活动状态,Cookie技术便是一种保持Web浏览状态的手段。Cookie是客户端保存用户信息的一种机制,用来记录......
  • Openstack4j best practice-Multi Thread Token Sharing
    Openstack4jMulti-threadTokenSharingAuthor:slankkaCountry/Region:ChinaMainlandLanguagesskills:EnglishbutnotwellKeywordsCloudVirtualMachinePaasOpenstackMulti-threadingBackgroundWearebuildingaVirtualMachinePlatformasPaas,th......
  • 引用登录token方法
    注:environment :环境变量   Globals:全局变量step1:提取出 token 参数数据,设置成全局变量pm.environment.set("token", JSON.parse(responseBody).data.token) step2:点击send,获取的token会自动放到右上角的环境变量中step3:在引用的接口中带入参数:   Bearer......
  • json Web Token技术简要分析
    JsonWebToken是一个开发标准,用于作为json对象在各方之间安全等传输信息,该信息可以被验证和信任,因为是数字签名的。应用场景Authorization(授权):一旦用户登录,后续每个请求都会包含jwt,允许该用户访问令牌允许的路由,服务和资源。单点登录是现在广泛使用jwt的一个场景,因为其开销小,并......
  • SpringBoot 使用 Sa-Token 完成注解鉴权功能
    注解鉴权——优雅的将鉴权与业务代码分离。本篇我们将介绍在Sa-Token中如何通过注解完成权限校验。Sa-Token是一个轻量级java权限认证框架,主要解决登录认证、权限认证、单点登录、OAuth2、微服务网关鉴权等一系列权限相关问题。Gitee开源地址:https://gitee.com/dromar......
  • OpenIddict token expiration
    @@OpenIddicttokenexpiration https://nwb.one/blog/openid-connect-dotnet-5在.NET5中使用OpenIddict设置令牌身份验证什么是OpenIddict?OpenIddict是OpenIDConnect服务器中间件的.NETCore实现,允许您在任何.NETCore/.NET5应用程序中轻松设置OpenIDCo......
  • 通过获取token,对象oss创建桶名称和文件上传
     #!/bin/bash#oss对象存储访问地址sfoss_host="http://fns-css-core-shenzhen-xili1.osssit.sfcloud.local:8080/v1/AUTH_FNS-CSS-CORE/"#获取昨天日期,20230510daysdate=`date-d"3daysago"+%Y%m%d`#设置oss对象存储桶名称yunhu20230510sfoss_bucket="yunhu$......
  • cookie session token 发展史(便于理解jwt)
    目录一、cookiesessiontoken发展史(彻底理解cookie,session,token,便于理解jwt)1、Cookie,Session,Token发展史2、Cookie,Session解释2.1Cookie2.2Session2.3cookie和session的区别3、Token介绍3.1传统方式——基于服务器的验证3.2基于服务器验证方式的问题3.2.1Seesions3.2.2......
  • hugging face之Tokenizers
    Tokenizers是HuggingFace开发的一个高效的文本分词库,用于将自然语言文本分割成单个的标记(tokens),以便用于自然语言处理任务中,如文本分类、命名实体识别、机器翻译等。Tokenizers支持多种语言,并提供了多种分词器的实现,包括Byte-PairEncoding(BPE)、WordPiece和Unigram。用户可以......
  • JWT 生成token
      packagecom.landray.kmss.cmex.ssooauth.util;importio.jsonwebtoken.Claims;importio.jsonwebtoken.ExpiredJwtException;importio.jsonwebtoken.Jwts;importio.jsonwebtoken.SignatureAlgorithm;importorg.apache.commons.lang.StringUtils;importjava.......