← Back to blog

Why IP-Based Rate Limiting Won’t Stop a Real DDoS Attack

Un DDoS no es una IP, son miles a la vez

You’ve got rate limiting turned on, blocking IPs that send too many requests, and your server still goes down the moment a real attack hits. It’s not that rate limiting doesn’t work — it’s solving a different problem than the one attacking you.

What IP-based rate limiting does well

Counting requests per IP and blocking whoever crosses a threshold works great against a single attacker: someone running a brute-force script against your login, or an aggressive scraper hitting from one machine. In that scenario, cutting off that one IP solves the problem instantly.

Why it fails against a real DDoS

A botnet isn’t one IP, it’s thousands

A distributed denial-of-service attack (DDoS) doesn’t send all its traffic from a single source — it spreads it across hundreds or thousands of different machines, each making relatively few requests. If your rule is “block after 50 requests per minute from the same IP,” a well-distributed botnet never hits that threshold on any single IP, even while the combined total is taking your server down.

Every new IP starts its counter at zero

Even if you block each IP the moment it crosses the line, the attacker just keeps adding new ones. IP-based rate limiting is built to stop a single abuser, not to recognize that the site’s total traffic has spiked because of a coordinated attack.

⚠️ The symptom isn’t “one suspicious IP,” it’s the whole siteIf your WordPress slows down or stops responding, and your logs don’t show any single IP with an abnormal volume, that’s the classic sign the problem is total volume, not one origin — exactly what IP-based rate limiting can’t see.

What a purpose-built mode does differently

Counting global traffic, not by source

Instead of watching each IP separately, this approach measures how many requests the site is receiving in total over a short window. If that total exceeds what’s normal for your site, it triggers a response — without needing to first identify which of the thousands of IPs is “the culprit,” because there isn’t just one.

A lightweight challenge instead of taking the server down

When global volume spikes, instead of letting every single request fully execute WordPress (database query, plugin loading, and all), a small challenge is served — one a normal browser solves instantly, but that stops most automated traffic before it ever consumes real server resources.

SeenSecure security dashboard showing site traffic activity
The security dashboard lets you watch total site traffic volume, not just IP by IP.

What this kind of protection doesn’t replace

It’s worth being honest about the limits: this layer is built to protect the site’s regular pages against a massive traffic spike, not to shield forms, payments, or the API on its own — those routes need their own dedicated protection, precisely because you don’t want to interrupt a real purchase halfway through with a challenge.

Frequently asked questions

Is IP-based rate limiting still useful, then?

Yes, it’s still valuable against brute-force attacks, aggressive scraping, or abuse from a single source — it just isn’t the right tool against an attack distributed across thousands of IPs.

Do I need both running at the same time?

They complement each other: IP-based rate limiting covers individual abuse, and a global traffic layer covers the scenario where no single IP stands out but the site’s total does.

Can a DDoS attack take down any WordPress site without dedicated protection?

Yes — without any layer measuring total volume, WordPress processes every request individually (database included), and a high enough volume exhausts server resources even if each request looks harmless on its own.

Want to really protect your WordPress?

Protect your WordPress with 70+ protections: firewall, 5-layer anti-bot, malware scanner, IP management, hardening and automatic backups. FREE plan, free forever.

Create free account →

Select a sports item

Protected by SeenSecure Smart Shield