第三方软件CMA/CNAS测评机构:【Apifox的自定义加密和签名的安全测试技巧】

Apifox中实现自定义的加密和签名是通过前后置脚本功能来完成的。这对测试那些具有复杂安全机制的API比较重要,尤其是在一些大型团队测试时能保证测试的安全、一致和自动化。

前后置脚本的加密签名

可以通过编写JavaScript脚本,在请求发送前(前置)动态处理数据,或在收到响应后(后置)进行解密。

参数签名:加密方式MD5, HMAC-SHA256等。前置脚本。操作 pm.request 对象,对参数排序、拼接、加密,并将签名结果添加到请求中。使用内置 CryptoJS 库。关键在于按接口规范拼接"签名字符串",并处理好密钥的管理。

请求体加密:加密方式RSA (非对称加密),前置脚本。使用 jsrsasign 等外部库,用公钥加密整个或部分请求体。注意长文本需分段加密,后端解密通常按128字节分块,前端(JS)对应为256位十六进制。

响应体解密:加密方式RSA, AES, Base64,后置脚本。操作 pm.response 对象,获取加密的响应数据,解密后重新设置到响应体中。RSA解密同样需分段处理。AES解密需保证模式、填充方式和后端一致。

动态令牌管理:加密方式JWT, OAuth Token,前置脚本。检查环境变量中令牌的有效性,过期时自动调用登录接口刷新。使用 pm.sendRequest 发送登录请求,将新令牌存入环境变量供后续使用。

​

自动化方式

保证脚本执行顺序

如果请求参数中包含变量(如 {{timestamp}}),签名必须在变量被替换为实际值后进行,否则签名会失效。需要在前置操作中,手动调整操作顺序,将"自定义脚本"排在系统自带的 "变量替换"操作之后。

模块化和公共脚本

将通用的签名/加密算法(如公司统一的签名规范)封装为 "公共脚本"。之后,可在项目、目录或单个接口的"前置操作"中直接引用,避免代码重复,便于统一更新。

安全地管理密钥

切勿将密钥硬编码在脚本里。应统一存储在 "环境变量" 或 "全局变量" 中。在团队协作时,通过配置不同环境(开发、测试、生产)来隔离密钥。

集成自动化测试和CI/CD

测试套件:将已配置安全脚本的接口编排成业务测试流程,Apifox会自动按顺序执行。

CLI集成:使用 apifox-cli 在命令行运行测试套件。可集成到Jenkins、GitLab CI等平台,在代码构建后自动进行API回归测试,并生成测试报告。

对于一个新项目或团队,建议按以下步骤系统性地建立这套方法:

第一步:分析归档

集中分析所有需要加密、签名的接口,归档其算法、密钥、参数顺序等规则,形成内部文档。

第二步:基础建设

在Apifox项目中配置好各环境(开发、测试、生产)及对应的环境变量(如 base_url, app_key, app_secret)。

第三步:脚本开发和封装

根据第一步的文档,为每种签名/加密算法编写并调试脚本。将经过验证的脚本保存为 "公共脚本"。

第四步:应用集成

将公共脚本应用到对应的接口或目录上。开始编排测试套件,并尝试在CI/CD流程中接入apifox-cli进行自动化测试。

在Apifox中实现高级安全测试就是熟练运用前后置脚本处理复杂逻辑,并通过公共脚本和自动化测试将它转化为团队的标准化的可复用的。

文章来源:卓码软件测评

精彩推荐:点击蓝字即可
▲软件负载测试 ▲API自动化测试 ▲软件测试 ▲第三方软件测试 ▲软件性能测试 ▲软件测试机构

相关推荐
螺丝钉tina7 小时前
[Playwright] [02]常用命令与调试:Debug UI、Mode和 Trace Viewer
开发语言·javascript·测试工具·ui·自动化
七夜zippoe13 小时前
Agent 测试实战:单元测试、集成测试与 Mock LLM 策略
ai·单元测试·集成测试·mock·agent
Da Da 泓1 天前
五子棋 Web 端测试用例报告
前端·网络·websocket·网络协议·测试用例·项目
梧桐1681 天前
14天、31个缺陷、28个测试脚本—用 Claude Code 完成第三方软件测试
人工智能·测试工具
会开车的鸟哥1 天前
自动创建测试用例与组件测试向导
测试用例·simuinktest
2501_915921432 天前
KXBuild CI 实操,Windows/Linux 服务器接入 Jenkins 打包 iOS IPA
服务器·windows·vscode·ios·ci/cd·个人开发·敏捷流程
mewowaBc2 天前
postman使用细则
测试工具·postman·偏差
梦想不只是梦与想2 天前
鸿蒙 AI自动化测试实现
单元测试·harmonyos·hypium
光影6272 天前
Unittest单元测试基础速记
测试工具·单元测试·json·测试覆盖率
螺丝钉tina2 天前
[Playwright][08] Upload 模块自动化:如何设计真实业务测试用例?
运维·自动化·测试用例