Skip to content
Skillpedia
Misc35k · #6021

performing-api-security-testing-with-postman

Helps your agent build repeatable API security tests using Postman, covering the OWASP API Security Top 10.

What it does

This tool uses Postman to test API security. It checks for common vulnerabilities like unauthorized access, code injection, and data leaks by simulating different user roles.

When to use it

  • ✓When creating repetitive security tests for APIs.
  • ✓When automating security checks in development processes.
  • ✓When testing access for different user profiles (regular, admin) to an API.

Example of what to ask your AI

“Test my API's security against common vulnerabilities using Postman.”

Want more? Open the sections below.

How to use

The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.

Skill link

https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/performing-api-security-testing-with-postman/SKILL.md

Ready-to-paste message

Use this skill to help me: https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/performing-api-security-testing-with-postman/SKILL.md Read the SKILL.md file at that link and follow its instructions for my task.
How it works

You configure Postman with your API's details and simulate different users. The tool sends requests and checks if the API responds securely, as expected.

Installation

Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.

In the terminal (Claude Code, Codex, Cursor), in your project folder:

npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill performing-api-security-testing-with-postman

Or download just the file:

curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/performing-api-security-testing-with-postman/SKILL.md -o SKILL.md
Technical content (original SKILL.md)

Original text by the author, straight from GitHub.

Performing API Security Testing with Postman

When to Use

  • Building repeatable API security test suites for OWASP API Security Top 10 coverage
  • Creating automated security regression tests that run in CI/CD pipelines via Newman
  • Testing API authentication and authorization across multiple user roles systematically
  • Integrating Postman with OWASP ZAP proxy for combined manual and automated security testing
  • Establishing a baseline security test collection for new API endpoints before deployment

Do not use against production APIs without authorization. Postman security testing involves sending potentially malicious payloads.

Prerequisites

  • Postman Desktop or web application with an active workspace
  • Target API with OpenAPI/Swagger specification for collection import
  • Test accounts for at least three roles: unauthenticated, regular user, admin
  • Newman CLI installed for CI/CD integration: npm install -g newman
  • OWASP ZAP configured as local proxy (localhost:8080) for Postman proxy integration
  • API environment variables for base URL, tokens, and test data

Workflow

Step 1: Environment and Collection Setup

Create Postman environments for multi-role testing:

// Environment: API Security Test - Regular User
{
    "values": [
        {"key": "base_url", "value": "https://target-api.example.com/api/v1"},
        {"key": "auth_token", "value": ""},
        {"key": "user_email", "value": "regular@test.com"},
        {"key": "user_password", "value": "TestPass123!"},
        {"key": "user_id", "value": ""},
        {"key": "other_user_id", "value": "1002"},
        {"key": "admin_endpoint", "value": "/admin/users"},
        {"key": "test_order_id", "value": ""},
        {"key": "other_user_order_id", "value": "5003"}
    ]
}

Pre-request script for automatic authentication:

// Collection-level pre-request script for auto-login
if (!pm.environment.get("auth_token") || pm.environment.get("token_expired")) {
    const loginRequest = {
        url: pm.environment.get("base_url") + "/auth/login",
        method: "POST",
        header: {"Content-Type": "application/json"},
        body: {
            mode: "raw",
            raw: JSON.stringify({
                email: pm.environment.get("user_email"),
                password: pm.environment.get("user_password")
            })
        }
    };

    pm.sendRequest(loginRequest, (err, res) => {
        if (!err && res.code === 200) {
            const token = res.json().access_token;
            pm.environment.set("auth_token", token);
            pm.environment.set("user_id", res.json().user.id);
        }
    });
}

Step 2: BOLA (API1) Test Collection

// Test: Access other user's profile (BOLA)
// Request: GET {{base_url}}/users/{{other_user_id}}
// Auth: Bearer {{auth_token}}

// Test script:
pm.test("BOLA: Cannot access other user profile", function() {
    pm.expect(pm.response.code).to.be.oneOf([401, 403]);
});

pm.test("BOLA: No user data leaked on denial", function() {
    if (pm.response.code === 200) {
        const body = pm.response.json();
        pm.expect(body).to.not.have.property("email");
        pm.expect(body).to.not.have.property("phone");
        pm.expect(body).to.not.have.property("address");
        // Flag as BOLA if full profile returned
        console.error("BOLA VULNERABILITY: Full profile returned for other user");
    }
});

// Test: Access other user's order
// Request: GET {{base_url}}/orders/{{other_user_order_id}}
pm.test("BOLA: Cannot access other user order", function() {
    pm.expect(pm.response.code).to.be.oneOf([401, 403, 404]);
});

// Test: Modify other user's resource
// Request: PATCH {{base_url}}/users/{{other_user_id}}
// Body: {"name": "Hacked"}
pm.test("BOLA: Cannot modify other user profile", function() {
    pm.expect(pm.response.code).to.be.oneOf([401, 403]);
});

Step 3: Authentication (API2) Test Collection

// Test: Token validation
// Request: GET {{base_url}}/users/me
// Auth: Bearer invalid_token_value

pm.test("Auth: Invalid token rejected", function() {
    pm.expect(pm.response.code).to.be.oneOf([401, 403]);
});

// Test: Expired token handling
// Request: GET {{base_url}}/users/me
// Auth: Bearer {{expired_token}}

pm.test("Auth: Expired token rejected", function() {
    pm.expect(pm.response.code).to.equal(401);
});

// Test: Missing authentication
// Request: GET {{base_url}}/users/me
// Auth: None


…
FAQ

What is the OWASP API Security Top 10?

It's a list of the 10 most critical security flaws found in APIs, created by the Open Web Application Security Project (OWASP).

What is CI/CD?

It's a software development practice that automates code integration and delivery, allowing changes to be tested and released faster.

Can I use this on production APIs?

Not unless you have explicit authorization. Security tests can send data that resembles attacks and might affect the API's operation.

Details

Original description by the author

Uses Postman to build structured API security test collections covering the OWASP API Security Top 10—authentication bypass, authorization flaws, injection, and data exposure—with multi-role environments, automated test scripts, and OWASP ZAP/Newman integration for CI/CD. Use when building repeatable Postman-based API security regression tests or automating OWASP API Top 10 coverage in a pipeline.

repo: mukul975/Anthropic-Cybersecurity-Skills

Popularity

GitHub stars
35k
Ranking position
#6021
License
Apache-2.0
Updated
8/31/2026

Is this skill useful?

0

Sign in to vote.

Comments

  • …

More skills from this repository

Similar skills