Skip to content
Security
Skill

/api-authz-test

Test an API's authorization — BOLA (object-level), BFLA (function-level), and BOPLA (property-level / mass assignment) — to confirm each request is authorized for the caller. Use to validate the top OWASP API risks on an authorized target.

From plugin
awesome-claude-security
6111 skills17 agents13 commands1 MCP
Install
$ npx -y skills add jassics/awesome-claude-security --skill api-authz-test --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/api-authz-test

Context preview

The summary Claude sees to decide when to auto-load this skill.

Test an API's authorization — BOLA (object-level), BFLA (function-level), and BOPLA (property-level / mass assignment) — to confirm each request is authorized for the caller. Use to validate the top OWASP API risks on an authorized target.

SKILL.md

api-authz-test.SKILL.md
name: api-authz-test
description: >-
  Test an API's authorization — BOLA (object-level), BFLA (function-level), and
  BOPLA (property-level / mass assignment) — to confirm each request is authorized
  for the caller. Use to validate the top OWASP API risks on an authorized target.

Goal

Evidence on whether the API enforces authorization server-side for every object, function, and property against the authenticated caller — or whether a user can reach data/operations/fields they shouldn't.

Prerequisites

  • Authorization to test, ideally two users at different privilege/tenant levels and

an admin, with identifiable objects.

Test cases

1. **BOLA (object level)** — as User A, swap object identifiers (path/query/body, IDs, UUIDs, GraphQL node IDs) to read or modify User B's objects. 2. **BFLA (function level)** — call admin/privileged operations as a normal user; try alternate methods/verbs, hidden endpoints, and GraphQL mutations not exposed to your role. 3. **BOPLA / mass assignment** — add privileged properties to a write (e.g. `"role":"admin"`, `"isVerified":true`) and check if they're accepted; inspect responses for over-exposed fields. 4. **Tenant isolation** — cross-tenant object access where multi-tenant.

Steps

1. Map objects, operations, roles, and the property model (use the schema/spec). 2. Run cases as the lower-privilege identity; capture request+response evidence. 3. Record per case: enforced / leaked / accepted, with evidence (redact secrets). 4. Identify the gap: ID trusted from request, no per-object/function/property authz, writable fields not allow-listed.

Output

A results table: case · object/function/property · result · evidence · remediation (deny-by-default authz per object/function/property tied to identity; field allow-listing). Confirmed issues → `security-reporting:finding` (high+ for cross-user/tenant access).

Notes

BOLA + BFLA are the #1 and #5 API risks and cause most API breaches. Authorization must be enforced server-side per request — never infer it from the client-supplied ID, role, or tenant. Same class as web `access-control-test`.

Read more
Ships withawesome-claude-security

A Claude Code plugin marketplace for the full cybersecurity & GenAI-security lifecycle — from recon and threat modeling to detection engineering, GRC, and CISO-level strategy. A pentester knows which OWASP test bends a broken-access-control endpoint.

Get the whole plugin

Other skills on awesome-claude-security.