API Security & Auth Testing

API Security Testing Checklist: OWASP Top 10 Mapped (CSV)

Parveen Kumari13 min read

Quick answer

An API security testing checklist lists the checks to run against every API before release, grouped by the OWASP API Top 10 (2023): object and function authorization, authentication and JWT, OAuth, rate limiting, data exposure, SSRF, misconfiguration, inventory, unsafe upstream calls and logging. Use the 76-item CSV below, automate what you can in CI and test the rest by hand.

Reviewed by Smeet Gohel

Share:
API security testing checklist diagram with the ten OWASP API Security Top 10 2023 risks as checklist rows grouped into authorization, authentication, resources, configuration and logging

Part of the API Security & Auth Testing hub. Start with the pillar guide: API security testing: the complete guide.

This API security testing checklist gives you 76 checks to run against an API before every release. They are grouped by the OWASP API Security Top 10 (2023), and each comes with a concrete way to test it and the result you should expect. Download the full checklist as CSV to import into a spreadsheet, GitHub issues or your test management tool.

The checklist is the practical companion to our API security testing guide, which explains the methods and tools. For a deeper walkthrough of each OWASP risk with attack examples, see OWASP API Top 10 vulnerabilities and how to test them.

How to use this API security testing checklist

  1. Download the CSV and filter it to the areas your API has. A public read-only API won't need the OAuth or business-flow rows; a payments API needs all of them.
  2. Set up two test users (and a third with admin rights) in a non-production environment. The most important authorization checks compare what one user can do with another user's data.
  3. Start with the Critical rows. Broken authorization and authentication hold the top two places in the OWASP list, and they are easy to test once you have two users.
  4. Mark each row as pass, fail, not applicable or not tested. "Not tested" is a valid answer; a blank is not.
  5. Automate the rows marked "Yes" and run them in CI. Keep the "Partly" rows on a manual release checklist.
  6. Re-run on change. New endpoints, auth changes and new upstream integrations all reopen rows.

Every check assumes you test against an environment you own or are authorized to test. Never run burst, injection or data-changing checks against production without explicit approval.

OWASP API Security Top 10 (2023) checklist

This table maps each 2023 risk to the checks in the CSV and gives the test ideas that find most real issues.

RiskWhat goes wrongTest ideasCSV rows
API1 Broken Object Level AuthorizationA user reads or changes another user's object by changing an IDCreate an object as user A, request it with user B's token; try neighbouring and random IDs; repeat for update and delete; check tenant isolationAUTHZ-01 to 04
API2 Broken AuthenticationWeak or missing checks on credentials, tokens and sessionsNo token, malformed token, expired token; JWT alg: none, stripped signature, algorithm confusion; brute-force limits; logout revokes tokensAUTH-01 to 09, JWT-01 to 07, OAUTH-01 to 04, 06, 07
API3 Broken Object Property Level AuthorizationToo many fields returned, or fields a user shouldn't set are writableSend role, isAdmin, ownerId in a PATCH; compare response fields with the schema per role; scan for secretsAUTHZ-05, 06, JWT-08, DATA-01 to 03
API4 Unrestricted Resource ConsumptionNo limits on rate, size or cost of requestsBurst above the limit and expect 429; spoof X-Forwarded-For; huge pageSize; oversized body; GraphQL depth and aliasesRATE-01 to 03, 05 to 08
API5 Broken Function Level AuthorizationA normal user calls admin or management functionsCall admin routes with a user token and with no token; try undocumented methods; check scopes per operationAUTHZ-07, 08, OAUTH-05
API6 Unrestricted Access to Sensitive Business FlowsAutomated abuse of flows like checkout, sign-up or coupon redemptionReplay one-time requests; send 5–10 in parallel; skip or reorder steps; tamper with values between steps; tighter limits on login and OTPFLOW-01 to 04, RATE-04
API7 Server Side Request ForgeryThe API fetches a URL the attacker controls, reaching internal systemsSubmit metadata IPs (169.254.169.254), loopback, private ranges and encoded variants in URL fields; follow redirectsSSRF-01 to 03
API8 Security MisconfigurationMissing hardening: TLS, headers, CORS, verbose errors, exposed consolesCheck TLS and HSTS; nosniff and no-store; reflected CORS origins; stack traces; /actuator, /debug, /.gitCONF-01 to 07, DATA-04
API9 Improper Inventory ManagementOld versions, undocumented endpoints or staging hosts left exposedCall retired versions; diff gateway routes against the spec; probe non-production hosts from outsideINV-01 to 03
API10 Unsafe Consumption of APIsYour API trusts data from third-party APIs too muchMock the upstream to return malformed, oversized or redirecting responses; check TLS and timeouts on outbound callsUC-01 to 03
Injection (outside the 2023 list)SQL, NoSQL, command, XXE, path traversalPayloads in every parameter and body field; watch for errors, delays and behaviour changesINJ-01 to 06
Logging and monitoring (cross-cutting)Attacks go unnoticed, or logs leak secretsCheck failed auth and authz are logged; search logs for tokens; trigger an alertLOG-01 to 06

Injection moved out of the API Top 10 in 2023 (it was API8 in 2019). It still belongs on any checklist, and fuzzing is the fastest way to cover it; see API fuzz testing.

Run these checks on every build. Shift-Left API's API security testing add-on (paid; included on Trial) runs 94 of its 100 catalogue checks on a standard install. Each one is mapped to the OWASP API Security Top 10 (2023), OWASP ASVS 5.0 and CWE. Eight authorization checks use a second test user. Every report opens with what was not checked, and a probe that couldn't reach your API counts as "not evaluated", never as a pass. Start a free trial to try it on a non-production environment.

Ready to shift left with your API testing?

Try our no-code API test automation platform free. Generate tests from OpenAPI, run in CI/CD, and scale quality.

Authentication, JWT and OAuth checks

Authentication flaws are the second-ranked risk and the easiest to test thoroughly, because each check is a single request with a modified credential. For step-by-step code, see the JWT testing guide and OAuth API testing best practices.

IDCheckHow to testExpected
AUTH-01Protected endpoints require credentialsCall each protected operation with no Authorization header401
AUTH-03Expired tokens are rejectedUse a token whose exp is in the past401
AUTH-04Brute force is limitedRepeated failed logins against a throwaway account429 or lockout at the documented threshold
AUTH-05No username enumerationCompare unknown user vs wrong passwordSame status, body and similar timing
AUTH-06No credentials in URLsLook for tokens or keys in query stringsHeaders or body only
AUTH-07Logout revokes tokensReuse the access and refresh tokens after logout401
JWT-01alg: none rejectedRe-encode a token with "alg":"none" and no signature401
JWT-02Signature verifiedChange sub or role, keep the old signature401
JWT-03Algorithm confusion blockedFor RS256, sign with HS256 using the public key as the secret401
JWT-04iss and aud validatedValidly signed token for another issuer or audience401
OAUTH-01PKCE with S256 requiredAuthorization request without code_challenge, or with plainRefused
OAUTH-02Exact redirect URI matchChange path, add a subdomain or query parameterRefused
OAUTH-03Implicit and password grants offresponse_type=token, grant_type=passwordRefused
OAUTH-06Refresh token rotationUse one refresh token twiceSecond use refused

These follow the current guidance: RFC 8725 (JWT best current practices) and RFC 9700 (OAuth 2.0 security best current practice). RFC 9700 says to use PKCE, exact redirect URI matching, and no implicit or resource-owner password grants.

Rate limiting and resource consumption checks

Missing limits turn your API into a free resource for scrapers, credential stuffers and anyone who wants to run up your cloud bill.

IDCheckHow to testExpected
RATE-01Per-client limit enforcedBurst above the documented limit429 with Retry-After
RATE-02No bypass by spoofed headersRepeat the burst rotating X-Forwarded-For, X-Real-IPStill 429
RATE-03Keyed per identityTwo tokens on one IP; one token on two IPsEach identity limited
RATE-04Tighter limits on sensitive flowsBurst login, reset, OTP, checkoutStricter than general limits
RATE-05Page size capped?limit=100000, ?pageSize=-1Capped or 400
RATE-06Body size cappedBody above the documented maximum413, no 500
RATE-07GraphQL cost limitedDeep nesting, many aliases, batched queriesRefused with a clear error

429 Too Many Requests is defined in RFC 6585. For test code and tooling, see testing API rate limiting and throttling.

Data exposure and configuration checks

Many API leaks don't need an attack at all: the data is in the response, and the client simply doesn't display it.

IDCheckHow to testExpected
AUTHZ-05Mass assignment blockedSend role, isAdmin, price in POST/PATCHIgnored or 400; unchanged on read-back
AUTHZ-06Only documented fields returnedCompare responses with the schema, per roleNo internal or extra fields
DATA-01No secrets in responsesScan bodies for keys, tokens, hashes, card numbersNone
DATA-02No personal data to anonymous callersCall public endpointsNo emails, phones, addresses
DATA-04Sensitive responses not cachedCheck Cache-Control on account datano-store
CONF-01TLS enforcedTLS version, certificate, HSTSTLS 1.2+, valid, HSTS set
CONF-03CORS not reflecting originsOrigin: https://evil.example with credentialsNot reflected
CONF-04Errors don't leak internalsTrigger 400, 404, 500No stack traces, SQL or paths
CONF-06No public debug surfaces/actuator, /debug, /metrics, /.git404 or auth required

The fastest way to catch over-sharing is to validate every response against the response schema with additionalProperties: false, per role. A field that isn't documented shouldn't be there.

Free ZIP: CSV pack + guide

OWASP API Top 10 Test-Case Pack

60 API security test cases mapped to the OWASP API Security Top 10 (2023): positive and negative cases for BOLA, broken auth, SSRF and misconfiguration.

Download Free

Logging, monitoring and inventory checks

You can't respond to attacks you can't see, and you can't protect endpoints you don't know exist.

IDCheckHow to testExpected
LOG-01Authentication failures loggedFail logins and token checks, inspect logsLogged with time, client and reason
LOG-02Authorization failures loggedTrigger 403s from the AUTHZ checksLogged with user, resource, action
LOG-03Secrets never loggedSearch logs after a test run for tokens and passwordsNone found
LOG-04Log injection neutralisedCRLF and fake log lines in input fieldsLogged as data
LOG-05Attacks raise alertsAuth-failure spike in stagingAlert reaches on-call
INV-01Retired versions offCall /v1 and other retired versions404 or 410
INV-02No shadow endpointsDiff gateway routes or traffic against the specEvery live route documented
INV-03Non-production hosts protectedReach staging and preview hosts from outsideUnreachable or authenticated

The OWASP Logging Cheat Sheet lists which events to log and which data never to log.

Automating the checklist in CI

About 60 of the 76 rows can run unattended. A practical split:

StageRowsWhy
Every pull requestAUTH-01 to 03, JWT-01 to 04, AUTHZ-01, 02, 05 to 07 on changed endpointsFast, single-request checks that catch the most common regressions
Nightly on stagingAll "Yes" rows, including rate-limit bursts and injectionSlower or noisier checks that need a stable environment
Release checklist (manual)OAUTH-02, 04, SSRF-03, LOG-05, INV-03 and the business-flow rowsNeed judgement, a callback server or a person watching alerts
Yearly or before major launchesEverything, as a penetration testDepth, chaining and business-logic abuse

Two practices keep the gate trusted:

  • Fail on new findings, not on all findings. Baseline known, accepted issues with an owner and an expiry date, and block only regressions and new high or critical findings.
  • Export results in a format CI understands, such as SARIF or JUnit, so findings appear in the pull request rather than in a report nobody opens.

API security testing checklist FAQ

What should an API security testing checklist include?

At minimum, checks for every OWASP API Security Top 10 (2023) risk: object level authorization, authentication, property level authorization, resource consumption, function level authorization, sensitive business flows, SSRF, misconfiguration, inventory and unsafe consumption of upstream APIs. Add injection, transport security and logging checks, which the 2023 list covers only partly or not at all.

Is there an API security testing checklist on GitHub?

Several community checklists live on GitHub, and OWASP publishes the API Security Top 10 and the Web Security Testing Guide there too. The CSV on this page is free to download and import into GitHub issues, a spreadsheet or a test management tool; each row has an ID, the OWASP mapping, how to test and the expected result.

How is an API penetration testing checklist different?

A security testing checklist is meant to run on every release, mostly automated, against a test environment. A penetration testing checklist guides a time-boxed, usually manual assessment that also chains findings, explores business logic and judges real-world impact. Most items overlap; the pen test goes deeper on fewer targets.

How often should we run API security tests?

Run automated checks on every pull request for changed endpoints and a full scan nightly or weekly against staging. Repeat manual checks such as OAuth redirect handling and business-flow abuse when those flows change, and commission a penetration test at least yearly or before a major launch.

Which API security checks can be automated?

Most of them: missing and invalid credentials, expired and tampered JWTs, two-user object authorization, admin endpoints with a normal token, rate-limit bursts, page and body size limits, security headers, CORS, error leakage, secrets in responses and retired versions. OAuth redirect handling, SSRF via redirects and alerting usually need some manual work or extra tooling.

Sources and further reading

Ready to shift left with your API testing?

Import your OpenAPI spec and get a runnable test suite, in our cloud or on your own infrastructure.