Anti-spam teardown · Gate
IP reputation and rate limiting
Ten submissions from one address in a minute is not ten customers. Capping it is basic hygiene and you should do it — as long as you are clear about which problem it solves.
Corey Haines · San Diego · Aug 2026
One of 12 anti-spam teardowns. Bypass techniques change; this page states its date so you can judge how stale it is.
The short answer
Rate limiting reliably prevents a catastrophic hour and reliably fails to prevent a poisoned dataset. One submission per address, from a pool of millions of real consumer addresses, defeats every limit you can safely set.
What it stops
- Scripted botsMass submitters that never render your page.
- Yes
- Targeted automationHeadless browsers, solver services, residential proxies — aimed at you.
- No
- Paid humansPeople doing it by hand, cheaply.
- No
- Real people, bad leadsGenuine humans who were never going to buy.
- No
- Cost to the real buyerWhat it asks of the person you actually wanted.
- Low
How it works
Two related things usually get discussed together. Rate limiting counts requests per address, subnet or ASN over a sliding window and refuses past a threshold. IP reputation checks the address against a blocklist — Spamhaus, Project Honey Pot, a commercial feed, or your CDN’s own scoring — and refuses known-bad ones outright.
Both belong at the edge, in front of the application, where a refusal costs you nothing to serve.
What it actually stops
Bursts from a small number of origins, which is still the most common shape of attack because it is the cheapest to run. This is the defense that would have blunted the 665-fills-in-seventy-six-minutes case, and blunting that is worth real money: your database stays usable, your notification email stays readable, your team does not spend an afternoon on cleanup.
Reputation lists add a slice on top — datacentre ranges, known scanners, addresses that hit a spam trap last week. Useful, cheap, and lagging by design.
How it’s defeated
By distribution. Residential proxy networks resell access to millions of consumer connections, and an attacker who sends one submission per address never approaches any threshold you could set without blocking real traffic. There is no rate limit that distinguishes “one submission from a home connection in Ohio” from “one submission from a home connection in Ohio.”
Reputation lists lose the same race. The pools are large, rotating, and fresh; a list that updates daily is describing last week’s addresses. The addresses that matter are the ones nobody has reported yet, because they belong to somebody’s actual router.
And then the false-positive shape, which is specific enough to be worth planning around. A large company egresses hundreds or thousands of employees through a handful of addresses. A tight per-IP limit does not block a bot farm; it blocks the third person at your enterprise prospect who tried to register for the webinar that morning.
“If we stay on the current trajectory, websites will have to remove contact forms in the next few years due to the sheer volume of spam bots submissions. If your form software has a submission limit, bots are using it before real people even get a chance.”
That second sentence is the reason rate limiting is not optional even though it is insufficient. When your form builder meters you by the submission, an unmetered attack is a bill — and, past the cap, a closed door in front of the real buyer. See per-response pricing.
When it’s still worth using
Always, at the edge, set to catch catastrophes rather than spam. A generous limit — say twenty submissions per address per hour — costs no real user anything and removes the outcome where you wake up to four thousand rows.
- Limit per address and per form, so a busy office does not inherit a limit calibrated for a contact page.
- Prefer challenging over refusing when you are near the threshold: escalate to Turnstile rather than returning an error.
- Block datacentre ASNs before you touch consumer ranges. That is most of the cheap traffic and almost none of your buyers.
- Alert on the limit firing. A rate limit that engages is the earliest warning you get that something has started.
What to pair it with
No single method on this site is sufficient. These are the ones that fail differently enough to be worth running alongside it.
- Geo-blocking
- Same layer. Geography narrows the pool; rate limits cap what is left.
- Cloudflare Turnstile
- The right escalation at the threshold — challenge the borderline request rather than refusing it.