当前位置: 首页 > news >正文

经典问题——华测

1、没有 token 的情况下,接口的自动化测试可以通过哪些方式处理?

  1. 确认接口是否有其他认证机制:
  • 如果使用的是 Basic Auth、Session ID 等传统方式,可以在请求中直接传递相关认证信息(如用户名和密码、Cookie 等)。
  1. 如果接口没有任何认证机制:
  • 确认测试环境是否可以直接访问接口。没有认证可能是因为项目运行在封闭的内网环境,安全性依赖于网络隔离。如果如此,可以直接进行接口调用。
  1. 模拟真实请求:
  • 通过抓包工具(如 Fiddler、Wireshark、Postman)确认接口调用的请求头和参数,并在自动化测试中复现这些请求。
  1. 利用固定的测试账户:
  • 若接口允许用测试账户登录,则在自动化测试中以此账户的固定凭据来发送请求。
  1. 加强环境隔离:
  • 如果生产环境对安全性有要求,建议限制测试脚本的调用权限,只允许在测试环境中使用。
  1. 自动化工具选择:
  • 使用合适的自动化测试工具(如 JMeter、Rest Assured、Postman Collection Runner 等)模拟请求并验证响应。

无 token 的情况下,确保接口调用的认证机制(如果存在)正确实现即可;若没有认证机制,则重点在于验证功能逻辑而非安全性。

2、什么是 Token?

Token 是一种认证凭证,用于在客户端和服务器之间进行身份验证。它通常是一串加密的字符串,由服务器生成并返回给客户端,客户端在后续请求中携带 Token,服务器通过验证 Token 来判断请求的合法性。

Token 的主要功能:

  1. 身份验证:确认请求者的身份。
  2. 权限验证:确认请求者是否有权限访问指定资源。
  3. 防止重复登录:避免频繁验证用户名和密码。

Token 的典型内容:

内容部分描述
用户身份信息可能包括用户 ID、用户名等,用于标识用户身份。
签发时间Token 的生成时间,用于判断是否过期。
过期时间Token 的有效期,超过该时间后需要重新登录或刷新 Token。
权限信息描述用户的角色或权限范围,用于控制资源访问。
随机数/唯一标识符防止 Token 被重放攻击(Replay Attack)。
签名信息使用服务器密钥签名,确保 Token 内容未被篡改,可以通过加密算法(如 HMAC、RSA)验证真实性。

Token 的常见类型:

类型特点
JWT(JSON Web Token)一种标准化的 Token,基于 JSON 格式,包含 Header、Payload 和 Signature 三部分,支持跨语言验证。
Opaque Token不透明的 Token,通常是随机字符串,所有验证和信息存储在服务器端。
OAuth Token用于授权协议(如 OAuth2)的 Token,可以分为访问令牌(Access Token)和刷新令牌(Refresh Token)。

3、什么是 Cookies?

Cookies 是一种由服务器生成并存储在客户端浏览器中的小型数据文件,用于保存用户状态和信息。它可以帮助服务器识别用户、保存用户会话信息以及实现个性化功能。

Cookies 的特点:

  1. 存储位置:存储在客户端(通常是浏览器)中。
  2. 大小限制:通常每个 Cookie 最大为 4KB,一个域名最多可存储 20 个 Cookie(不同浏览器略有差异)。
  3. 生命周期
  • 会话 Cookie:浏览器关闭后即失效。
  • 持久化 Cookie:通过 ExpiresMax-Age 属性设置到期时间,存储在客户端直到到期或手动删除。
  1. 作用范围:可以通过 DomainPath 指定 Cookie 的适用范围。
  2. 安全性:通过 Secure 属性(仅通过 HTTPS 传输)和 HttpOnly 属性(禁止客户端脚本访问)提高安全性。

Cookies 的组成:

字段描述
名称(Name)Cookie 的键,用于标识存储的数据。
值(Value)Cookie 的值,存储具体信息(如 Session ID、用户偏好)。
域(Domain)指定 Cookie 的适用域名,默认是当前域名。
路径(Path)指定 Cookie 在域名下的适用路径。
有效期(Expires/Max-Age)指定 Cookie 的过期时间。
安全(Secure)如果设置,则 Cookie 仅通过 HTTPS 传输。
HttpOnly如果设置,则禁止通过 JavaScript 访问此 Cookie,增强安全性。
SameSite限制跨站点请求时是否携带 Cookie,值为 StrictLaxNone

Cookies 的主要用途:

  1. 会话管理:如保存用户登录状态、购物车信息。
  2. 个性化设置:如保存语言偏好、主题样式。
  3. 跟踪与分析:用于记录用户行为,支持广告投放和网站分析。

Cookies 的优缺点:

优点缺点
能在客户端和服务器间快速传递状态信息。容量有限,仅适合存储少量数据。
支持持久化存储,可以保存用户偏好或会话信息。安全性较低,可能被篡改或盗取(如 XSS 攻击)。
通过 HttpOnlySecure 等属性可以提高安全性。对用户隐私存在潜在威胁,可能被用于跨站点跟踪。
被广泛支持,几乎所有浏览器都兼容。每次请求都会自动携带,可能造成不必要的带宽浪费。

4、什么是 Session?

Session 是一种服务器端机制,用于在用户与服务器交互的多个请求之间保持用户的状态和数据。它通过在服务器端存储会话数据,并在客户端和服务器之间交换标识符(通常是 Session ID)来实现状态管理。

Session 的特点:

  1. 存储位置:会话数据保存在服务器端,客户端仅保存 Session ID。
  2. 标识唯一性:每个 Session 都有唯一的标识符(Session ID)。
  3. 生命周期:默认情况下,Session 会在用户关闭浏览器或 Session 超时时结束,可以通过配置延长或缩短生命周期。
  4. 安全性:比 Cookies 更安全,敏感数据不直接存储在客户端。
  5. 状态管理:常用于保持用户登录状态、购物车数据等。

Session 的组成:

组成部分描述
Session ID一个唯一标识符,用于关联客户端与服务器端的会话数据。
会话数据服务器端存储的具体信息(如用户身份、购物车、权限信息)。
生命周期配置指定会话的有效时间,通常可以通过服务器配置文件设置。

Session 的实现过程:

  1. 创建:用户首次访问服务器时,服务器生成一个唯一的 Session ID,并将其存储在服务器中,同时通过 Cookie、URL 重写或隐藏表单字段返回给客户端。
  2. 标识:客户端在后续请求中携带该 Session ID,服务器根据 Session ID 找到对应的会话数据。
  3. 使用:服务器利用会话数据为用户提供个性化服务。
  4. 销毁:会话到期或用户主动登出时,服务器删除会话数据。

Session 和 Cookies 的比较:

对比项SessionCookies
存储位置数据存储在服务器端,客户端仅存储 Session ID。数据直接存储在客户端。
安全性更安全,敏感信息不暴露给客户端。安全性较低,数据可能被篡改或窃取。
数据大小可存储较大数据量,取决于服务器配置。通常限制为 4KB 以内。
性能影响服务器存储需要占用更多资源,影响性能。不占用服务器存储资源,但每次请求都会传输数据。
生命周期通常与会话相关,可通过服务器设置有效期。ExpiresMax-Age 属性决定。

Session 的常见用途:

  1. 用户身份验证:在用户登录后,存储其身份信息。
  2. 购物车功能:临时保存用户选购的商品。
  3. 跨请求状态共享:为同一个用户的多个请求提供一致的数据状态。
  4. 权限管理:存储用户角色和访问权限信息。

凡是过去,皆为序章;凡是未来,皆有可期。


http://www.mrgr.cn/news/81835.html

相关文章:

  • 黄河小浪底水利枢纽泄洪预警广播系统正式上线
  • 【技术实战】R语言统计分析与可视化从入门到精通
  • 数据库的概念和操作
  • 【Unity3D】ECS入门学习(五)共享组件 ISharedComponentData
  • vue+echarts实现疫情折线图
  • redis cluster实验详解
  • 【论文阅读】Reducing Activation Recomputation in Large Transformer Models
  • QML学习(五) 做出第一个简单的应用程序
  • Mac M2 Pro安装MySQL 8.4.3
  • iOS 中的 nil、Nil、NULL、NSNull 僵尸对象和野指针
  • 深度学习笔记(5)——目标检测和图像分割
  • 嵌入式小白
  • 【网络】CookieSession
  • 玩转影刀AI Power-风景小助手教学
  • 2021.12.28基于UDP同信的相关流程
  • 【MySQL】第一弹----库的操作及数据类型
  • Tauri2+Leptos开发桌面应用--Sqlite数据库操作
  • 进军AI大模型-环境配置
  • vue Promise使用
  • Python爬虫(一)- Requests 安装与基本使用教程
  • 二叉树相关性质及其遍历
  • 【老白学 Java】第一次绘制
  • 阿里云人工智能工程师ACA认证免费课程学习笔记
  • Maven + MyBatis
  • MoH:将多头注意力(Multi-Head Attention)作为头注意力混合(Mixture-of-Head Attention)
  • Vuex用法