Linux下使用 Postman 进行接口保护的要点

在 Linux 桌面环境下,Postman 的接口保护主要围绕身份认证、请求加密与签名、敏感信息管理以及本地安全四个方面展开。下面给出可直接落地的做法与脚本示例。
一 身份认证与授权
var jsonData = pm.response.json();pm.environment.set("myToken", jsonData.token || jsonData.access_token);之后在请求头中使用 {{myToken}}。二 请求加密与签名
const CryptoJS = require("crypto-js");function aesEncrypt(content, key, iv) {const encrypted = CryptoJS.AES.encrypt(content, key, { iv: CryptoJS.enc.Utf8.parse(iv), mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });return encrypted.toString();}const key = "Y5MUIOM7BUWI7BQR"; const iv = "S41AXIPFRFVJL73Z";pm.environment.set("encUser", aesEncrypt("admin", key, iv));请求体中使用 “username”:“{{encUser}}”。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());});}eval(pm.globals.get("forgeJS"));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("encPwd", rsaEncrypt("P@ssw0rd", pm.globals.get("RSA_Public_Key")));请求体中使用 “password”:“{{encPwd}}”。// 假设已引入 pmlib(含 KJUR.crypto.Signature),私钥存于环境变量 pri_keyeval(pm.globals.get('pmlib_code'));const privkey = pm.environment.get('pri_key').replace(/n/g, "n");const dataToSign = pm.request.method + "n" +pm.request.url.getPathWithQuery() + "n" +pm.variables.replaceIn('{{$timestamp}}') + "n" +pm.variables.replaceIn('{{$randomUUID}}') + "n" +(pm.request.body?.raw || '');const sig = new pmlib.rs.KJUR.crypto.Signature({alg: "SHA256withRSA"});sig.init(privkey); sig.updateString(dataToSign);const signB64 = pmlib.rs.hextob64(sig.sign());pm.request.headers.add({ key: "Authorization", value: `SHA256-RSA nonce_str={{$randomUUID}},timestamp={{$timestamp}},signature=${signB64}` });const phone = "18211101111", opt = "testfan", ts = new Date().getTime();const sign = CryptoJS.MD5(phone + "your_salt" + ts).toString();pm.environment.set("phone", phone); pm.environment.set("opt", opt);pm.environment.set("timestamp", ts); pm.environment.set("sign", sign);请求体:{ "phoneNum":"{{phone}}", "optCode":"{{opt}}", "timestamp":{{timestamp}}, "sign":"{{sign}}" }三 敏感信息与本地安全
pm.environment.unset("tmp"))。四 快速落地清单
Visual-Studio怎样快速查找变量或方法-Visual-Studio如何快速找到变量或方法
如何用excel绘制三维立体饼图-excel三维立体饼图设计方法
住小帮测试装修风格的方法-住小帮如何测试装修风格
软媒魔方如何关闭Cortana小娜-软媒魔方怎么禁用语音助手Cortana释放资源
安卓转iOS必备应用推荐:跨平台迁移工具与软件排行榜
Visual-StudioCode怎么关闭自动存储库检测子文件夹-Visual-StudioCode怎样关闭自动存储库检测子文件夹