温馨提示×

Postman在Ubuntu上如何进行安全性测试

小樊
43
2025-11-30 11:09:52
栏目: 智能运维

在 Ubuntu 上使用 Postman 进行 API 安全性测试

一 环境准备与安装

  • 安装方式(任选其一)
    • Snap:sudo snap install postman --classic
    • APT 仓库:
      • wget -qO - https://dl.postman.co/postman.gpg | sudo apt-key add -
      • echo “deb https://dl.postman.co/debian $(lsb_release -cs) main” | sudo tee /etc/apt/sources.list.d/postman.list
      • sudo apt update && sudo apt install postman
    • 官方压缩包:
      • wget https://dl.pstmn.io/download/latest/linux64 -O postman.tar.gz
      • sudo tar -xzf postman.tar.gz -C /opt/
      • sudo ln -s /opt/Postman/Postman /usr/local/bin/postman
  • 导入 API 定义
    • 在 Postman 中点击 Import,导入 OpenAPI/SwaggerJSON/YAML,自动生成请求集合以便后续安全用例编写与批量运行。

二 与代理抓包工具联动

  • 将 Postman 流量接入 Burp Suite/ZAP 进行深度分析与拦截:
    • 在 Postman 的 Settings → General 打开 Global Proxy Configuration,配置代理主机与端口(与 Burp 一致)。
    • 若被测 API 使用 HTTPS/TLS,需让系统信任 Burp CA
      • 推荐做法:将 Burp CA 导入 Ubuntu 系统信任库(浏览器与 Postman 均会继承系统信任)。
      • 临时做法:在 Postman Settings → GeneralSSL certificate verification 设为 Off(仅测试环境,避免生产风险)。
    • 验证:在 Burp 的 Proxy → HTTP history 能看到 Postman 发出的请求;若无流量,检查是否开启拦截、代理配置是否一致、是否设置了过滤范围。

三 核心安全测试用例设计

  • 认证与授权
    • 覆盖 BasicBearer/JWTOAuth 2.0 流程;验证 失效令牌过期令牌权限提升(低权限用户越权访问高权限资源)等场景。
  • 加密与传输
    • 全链路使用 HTTPS/TLS;核查是否禁用不安全协议与弱套件(如仅允许 TLS 1.2+)。
  • 输入验证与注入
    • 对查询参数、请求头、JSON/表单体进行 SQL 注入XSS命令注入路径遍历 等测试(示例:name=normal_user’ OR ‘1’='1;{“comment”:“”})。
  • 错误处理与信息泄露
    • 校验 4xx/5xx 响应不泄露 堆栈信息、数据库结构、密钥/内部路径 等敏感数据。
  • 速率限制与资源控制
    • 验证 限流并发限制大小限制(请求体/头部过大、上传过大文件)是否生效。
  • 安全响应头
    • 核查是否设置 Strict-Transport-SecurityContent-Security-PolicyX-Frame-OptionsX-Content-Type-OptionsReferrer-Policy 等。
  • 业务逻辑与越权
    • 测试 水平越权(访问/修改他人数据)、垂直越权(普通用户执行管理员操作)、批量分配 等。
  • 令牌与敏感信息
    • 检查 JWT 签名与过期策略、Refresh Token 轮换与撤销、密码重置 令牌一次性与时效性。
  • 文件与内容安全
    • 验证 上传类型白名单大小限制恶意文件检测存储隔离下载权限
  • 日志与监控
    • 确认安全事件(如多次失败登录、异常访问)是否被 记录与告警

四 在 Postman 中落地执行与自动化

  • 组织与变量
    • 使用 Collection 管理用例,利用 Environment/Collection Variables 管理 {{base_url}}、{{access_token}} 等,便于多环境切换与数据驱动测试。
  • 断言示例(Tests 标签)
    • 状态码与内容
      • pm.test(“Status is 200”, () => pm.response.to.have.status(200));
      • pm.test(“Response has id”, () => pm.expect(pm.response.json()).to.have.property(“id”));
    • 安全头检查
      • pm.test(“Has CSP header”, () => pm.response.to.have.header(“Content-Security-Policy”));
      • pm.test(“HSTS present”, () => pm.response.to.have.header(“Strict-Transport-Security”));
    • 错误响应不泄露敏感信息
      • pm.test(“Error response no sensitive info”, function () { if (pm.response.code >= 400) { const txt = pm.response.text(); pm.expect(txt).to.not.include(“stacktrace”); pm.expect(txt).to.not.include(“password”); pm.expect(txt).to.not.include(“secret”); } });
  • 批量运行与 CI/CD
    • 使用 Newman 在命令行/CI 中执行集合与环境:
      • 安装:npm install -g newman
      • 运行:newman run your_collection.json -e your_env.json --reporters cli,html
    • Jenkins/GitHub Actions/GitLab CI 中集成 Newman,实现每次提交/发布自动回归安全用例。

五 合规与注意事项

  • 仅在取得 明确授权 的目标系统开展测试,遵守法律与合规要求。
  • 避免对生产数据造成破坏:优先使用 测试环境;必要时使用 脱敏数据回滚方案
  • 谨慎处理 关闭证书校验禁用安全头 等设置,测试完成及时恢复。
  • 对发现的漏洞按 负责任披露 流程与相关负责人沟通,并提供复现步骤与修复建议。

0