接口测试——Cookie、Session、JWT

Cookie与Session的作用

Cookie

定义:

Cookie是存储在用户浏览器中的小数据片段,通常用于保存用户会话信息、偏好设置等。他们由服务器发送给客户端,并由客户端保存。

作用:

  • 保持用户状态:在用户浏览不同页面时维持登录状态或其他个性化设置

  • 追踪用户行为:例如记录用户的访问习惯以进行分析或广告推送

  • 安全特性:可以何止HttpOnly标志防止通过JavaScript访问(减少XSS攻击风险),以及Secure标志确保仅通过HTTPS传输

限制:

每个域名下的Cookie数量和大小有限制;Cookie在每次请求中都会发送到服务器,可能会增加请求的数据量。

解释:

  • 存在哪里?存在本人的浏览器这里

  • 有什么用?

    • 让网站记住你是谁(比如登录状态)

    • 记住你的偏好(比如语言、主题)

  • 举个例子:

    • 登录一个网站之后,下次打开它还记得你是谁,不需要重新登录,这就是Cookie的功劳

  • 缺点:

    • 容量很小(智能存少量的数据)

    • 每次访问网页都会带上它,可能影响速度

    • 如果不安全设置,容易被黑客读取

Session

定义:

Session时一种服务器端技术,用来跟踪用户的状态。当用户访问网站时,服务器为该用户创建一个唯一的session ID,并将此ID存储与cookie中返回给客户端

作用:

  • 管理用户会话:主要用于登陆验证、购物车等功能,能够使被来自同一用户的连续请求

  • 安全性较高:因为session数据存储在服务器上,不像cookie那样容易被篡改

  • 灵活性强:可以存储比cookie更多的信息,且不受浏览器cookie大小的限制

实现方式:

通常使用session ID来关联用户,session数据可以存储在内存、数据或者文件系统中

解释

  • 存在哪里?存在服务器那边(不是本人的电脑里)

  • 有什么用?

    • 网站用来识别你是谁,保存你的登录信息或购物车内容等

  • 举个例子

    • 你在电商网站加购商品,即便没付款,离开页面再回来,购物车还在,这可能是Session在起作用

  • 特点

    • 更安全,因为数据不在本人这里

    • 服务器要负责管理所有用户的Session,压力大一点

你去一家咖啡店,每次来都会另一个小卡片,上面写的你的名字和你喜欢的咖啡口味

这个小卡片就是cookie

还是这家咖啡店,不一样的是,进店时服务员给你一个会员编号,但不会写在卡片上,而是记在他自己的本子上

这个会员编号就是Session ID,服务员本子上的记录就是Session数据

Token认证机制(如JWT)

JSON Web Token(JWT)

定义:

JWT是一种开放标准(RFC 7519),用于在网络应用环境间安全地将信息作为JSON对象传输。通常用于身份验证和信息交换。

结构:

JWT由三部分组成,分别是头部(Header)、载荷(Payload)和签名(Signature)。这三部分用点号(.)分隔。

  • Header:描述令牌类型(即JWT)及所使用的签名算法

  • Payload:包含生命(claims),这些是关于实体(通常是用户)和其他数据的声明(比如用户名、角色、过期时间等)

  • Signature:用来验证消息在传输过程中没有被更改,对于使用私钥签名的令牌,还可以验证发送者的身份(验证这个token是不是真的)

    xxxxx.yyyyy.zzzzz

工作流程:

  • 用户使用用户名/密码登录系统

  • 系统验证凭据后生成JWT并返回给客户端

  • 客户端收到JWT后将其保存(通常在localStorage或sessionStorage中)

  • 后续请求都将携带此JWT到服务器进行身份验证

优点:

  • 无状态:不需要在服务器端保存会话信息,易于扩展

  • 跨域支持:适合分布式架构或多服务架构

  • 安全性:使用HMAC或RSA加密算法保证数据完整性和真实性

注意事项:

  • 保护好密钥:如果签名密钥泄露,则任何人都可以伪造令牌

  • 有效期控制:设置合理的过期时间来限制token的有效性,避免长期有效的安全隐患

  • 存储安全:避免在不安全的地方存储敏感信息,考虑使用HttpOnnly和Secure属性增强安全性

Cookie + Session vs Token(如 JWT)

对比

对比项Cookie + SessionToken(如 JWT)
存储位置浏览器(Cookie)+ 服务器(Session)浏览器(localStorage / sessionStorage)
是否需要服务器存储否(无状态)
是否适合分布式系统不太适合非常适合(跨域、多服务)
安全性中等(需设置 HttpOnly)较高(签名机制)
扩展性一般(Session 多服务器同步麻烦)强(适合微服务架构)

总结:

  • Cookie 是浏览器帮你保存的小纸条;

  • Session 是服务器帮你记的账本,靠 Cookie 来认人;

  • Token(如 JWT) 是你自己带着的电子身份证,走到哪带到哪,服务器一看就知道你是谁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值