Platform

Platform overview How it works Authorization testing Evidence & reports Private scanning Integrations

Solutions

Security agencies Product teams Regulated industries Partner programme

Learn

Blog Knowledge hub Compare

Resources

Pricing Documentation Help centre FAQ Security & data What we haven’t proved

Company

About Contact Careers Sign in to the platform Start a $199 pilot →

Home / Knowledge hub / Pagination abuse

Knowledge hub

Pagination abuse

Asking for huge pages or walking every page to pull data out in bulk.

Illustration explaining Pagination abuse

What it means

Pagination splits a long list into pages, so a client asks for the next fifty records rather than all of them at once. Pagination abuse is using that mechanism to take far more than intended, either by asking for a huge page or by looping through every page.

A page size, an offset or a cursor is only a request parameter. If the server accepts limit=1000000, or lets a single account step through the whole table, the paging has not limited anything. What counts is whether the server enforces the limit on its side.

Why it matters

Bulk reads are how a small flaw becomes a data breach. One missing check on a single record is a problem. The same check missing on a list that can be walked end to end is your entire customer table in one afternoon. The cost is also server load, which can slow everyone else down.

It combines badly with weak access rules. A list endpoint that skips the ownership check returns other people's records, and paging hands them over neatly in order. See also resource consumption. Weak list endpoints are among the quickest ways to move a lot of data.

How it shows up

You meet it in list and search endpoints, exports, admin tables and any infinite scroll. Typical mistakes are no maximum page size, sequential offsets that make it easy to count and walk everything, a total count that reveals how much there is, and no limit on how fast pages can be fetched.

Fix it on the server. Set a hard upper limit on page size, prefer opaque cursors to raw offsets, filter every page by what the caller may see, and apply rate limits per account. Test by asking for oversized pages and by walking a list from a low-privilege account.

Questions people ask

Pagination abuse, answered

What page size is safe?

There is no universal number. Choose a cap that matches what a real screen or integration needs, and enforce it on the server, ignoring larger values rather than trusting the client.

Return an error or the capped size, not what was asked for.

Are cursors safer than offsets?

A little. Opaque cursors are harder to guess and skip around, and they perform better on large tables. They do not replace access checks.

If the cursor works for any account, anyone can still walk the list.

Is this the same as scraping?

Scraping is the broader act of collecting data in bulk, often from public pages. Pagination abuse is one way to do it against an API.

The defences overlap: caps, rate limits and per-account checks.

Does hiding the total count help?

It helps a little, since the total tells a collector how long the job will take. It is not a control by itself.

Limits and access checks are what actually stop a bulk pull.

How do we test for pagination abuse?

Request pages far larger than the interface ever does, jump to extreme offsets, and loop through a list from an ordinary account. Note what comes back and how fast.

Then check that another account's records never appear.

Cyberlop mark

Can one account walk the whole list?

We test list and export endpoints for oversized pages, missing caps and records belonging to other accounts, and show the request and response. Book a pilot on one app.

Or start with a $199 pilot on one application: thirty days, success criteria agreed before day one, credited against the annual if you convert.