在 Ubuntu 上保护 Postman 数据安全的实用方案
一 安装与更新
- 优先使用 Snap 安装:命令为 sudo snap install postman --classic。Snap 提供应用沙盒,可限制权限、降低攻击面。完成后在应用菜单或终端输入 postman 启动。
- 保持持续更新:Snap 会自动更新应用;同时定期执行 sudo apt update && sudo apt upgrade 更新系统补丁,减少依赖层面的风险。
- 安全提醒:历史上曾出现与 Postman 相关的远程代码执行漏洞(如 CVE-2024-23738),务必关注官方安全通告并及时更新。
二 身份凭证与访问控制
- 使用 环境变量 管理 API Key、Token、密码 等敏感信息,避免在脚本或集合里硬编码;在请求中通过 {{变量名}} 引用。
- 对团队工作区启用 访问控制,仅授予必要的查看/编辑权限,降低误用与泄露风险。
- 为 Postman 账户启用 强密码 与可用的 双因素认证(2FA),并定期轮换密钥与令牌。
三 传输与网络安全
- 确保所有 API 请求均通过 HTTPS 发起,避免明文传输;在 Postman 中不要为了“方便”而关闭 SSL 证书验证。
- 如目标服务要求双向 TLS,可在 Postman 的 Settings -> Certificates 中配置 客户端证书(CRT/KEY + Passphrase)。
- 在系统层面使用 UFW 等防火墙限制不必要的入站/出站访问,仅开放所需端口与服务。
四 静态数据与密钥的加密处理
- 在集合或环境层面避免明文存放密钥;必要时对敏感字段进行加密后再存入变量,并在使用后及时清理。
- 在 Pre-request Script 中使用 CryptoJS 实现 AES 加密,示例:
- 安装库:在脚本顶部 const CryptoJS = require(“crypto-js”);
- 加密函数:
- function aesEncrypt(content, key, iv) { return CryptoJS.AES.encrypt(content, key, { iv: CryptoJS.enc.Utf8.parse(iv), mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }).toString(); }
- 使用示例:
- const key = “1234567812345678”; const iv = “0000000000000000”;
- pm.environment.set(“enc_pwd”, aesEncrypt(“MySecretPwd”, key, iv));
- 在请求体或头部使用 {{enc_pwd}} 引用。
- 如需 RSA 加密,可在 Pre-request 中动态加载 Forge.js,再用公钥加密:
- 动态加载:
- if (!pm.globals.has(“forgeJS”)) { pm.sendRequest(“https://raw.githubusercontent.com/loveiset/RSAForPostman/master/forge.js”, (err, res) => { if (!err) pm.globals.set(“forgeJS”, res.text()); }); }
- 加密函数:
- function rsaEncrypt(content, pubKeyPem) { const pub = forge.pki.publicKeyFromPem(pubKeyPem); return forge.util.encode64(pub.encrypt(content, ‘RSAES-PKCS1-V1_5’, { md: forge.md.sha1.create(), mgf: forge.mgf.mgf1.create(forge.md.sha1.create()) })); }
- 使用:pm.environment.set(“enc_token”, rsaEncrypt(“sensitive”, pm.environment.get(“RSA_Public_Key”)));
- 安全要点:密钥与 IV 不要硬编码在脚本中;为每次会话生成随机 IV;涉及公钥的脚本来源需可信。
五 团队与合规实践
- 定期 审计 与 监控 Postman 的使用与访问日志,及时发现异常访问或未授权操作。
- 对集合、环境与变量进行 定期审查与清理,移除不再使用的密钥与历史数据。
- 开展 安全意识培训,明确凭证管理、加解密流程与最小权限原则。