<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Peakhour.IO - DDoS Protection</title><link href="https://www.peakhour.io/" rel="alternate"></link><link href="https://www.peakhour.io/feeds/tag/ddos-protection.atom.xml" rel="self"></link><id>https://www.peakhour.io/</id><updated>2026-07-28T09:00:00+10:00</updated><entry><title>Everyone Says a WAF Is Useless. Are They Right?</title><link href="https://www.peakhour.io/blog/everyone-says-a-waf-is-useless/" rel="alternate"></link><published>2026-07-28T09:00:00+10:00</published><updated>2026-07-28T09:00:00+10:00</updated><author><name>AC</name></author><id>tag:www.peakhour.io,2026-07-28:/blog/everyone-says-a-waf-is-useless/</id><summary type="html">&lt;p&gt;Ten good reasons not to trust a web application firewall—and why most of them are arguments for using one properly, not going without one.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Spend long enough around application security and someone will tell you that web application firewalls are useless.&lt;/p&gt;
&lt;p&gt;They are easy to bypass. They block real customers. They cannot fix bad code. They cost money, need constant tuning and create one more thing that can fail.&lt;/p&gt;
&lt;p&gt;The annoying part is that none of this is entirely wrong.&lt;/p&gt;
&lt;p&gt;The mistake is jumping from “a WAF is imperfect” to “a WAF has no useful job”. A lock can be picked. We still lock the door. Security controls are allowed to solve a bounded problem.&lt;/p&gt;
&lt;p&gt;So here are ten excellent reasons not to use a WAF—and what they really tell us.&lt;/p&gt;
&lt;h2&gt;1. “We write secure code”&lt;/h2&gt;
&lt;p&gt;Good. Keep doing that.&lt;/p&gt;
&lt;p&gt;A WAF cannot repair broken access control, fix an insecure password reset flow or stop an application from selling the same scarce ticket twice. Those rules belong in the application because the application understands the customer, the object and the transaction.&lt;/p&gt;
&lt;p&gt;But even good teams ship bugs. Dependencies develop vulnerabilities. A vendor patch can take days to test. A legacy application may not have a team at all.&lt;/p&gt;
&lt;p&gt;This is where virtual patching earns its keep. A narrowly written WAF rule can block a known exploit while the real fix is prepared. &lt;a href="https://cheatsheetseries.owasp.org/cheatsheets/Virtual_Patching_Cheat_Sheet.html"&gt;OWASP describes the source-code fix as the preferred answer&lt;/a&gt;, while also recognising that an enforcement layer can reduce the exposure window.&lt;/p&gt;
&lt;p&gt;Secure code and a WAF are not competing ideas. One fixes the weakness. The other can make it harder to exploit in the meantime.&lt;/p&gt;
&lt;h2&gt;2. “Attackers can bypass it”&lt;/h2&gt;
&lt;p&gt;They can.&lt;/p&gt;
&lt;p&gt;Researchers have found WAF bypasses using alternative encodings, duplicated parameters and differences between the way a firewall and an application parse the same request. One 2024 study found &lt;a href="https://netsec.ccert.edu.cn/publications/sp24-wall"&gt;311 protocol-level evasion cases across 14 WAFs and 20 web frameworks&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;That finding should end any talk of a WAF as a force field. It should not convince us to pass every request straight to the application.&lt;/p&gt;
&lt;p&gt;Most hostile internet traffic is not a handcrafted masterpiece. It is scanning, probing and replaying familiar attacks across thousands of sites. Filtering that traffic does not make the application invulnerable. It removes a large amount of cheap, automated opportunity.&lt;/p&gt;
&lt;p&gt;A determined burglar may pick a lock. We still lock the door.&lt;/p&gt;
&lt;h2&gt;3. “WAFs block legitimate customers”&lt;/h2&gt;
&lt;p&gt;An untuned WAF certainly can.&lt;/p&gt;
&lt;p&gt;A product description, support ticket or API request may contain HTML, SQL-like text or unusual characters for perfectly innocent reasons. Turn every managed rule on, switch immediately to blocking mode and the first security incident may be your own checkout failing.&lt;/p&gt;
&lt;p&gt;Microsoft recommends starting a new WAF in detection mode, reviewing the logs and tuning it before enforcement. It also says &lt;a href="https://learn.microsoft.com/en-us/azure/web-application-firewall/afds/waf-faq"&gt;the process may take several weeks&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;What this rules out is the Friday-afternoon deployment: every managed rule enabled, blocking turned on and nobody watching checkout.&lt;/p&gt;
&lt;p&gt;Start by observing. Find the rules that match real traffic. Make exclusions as narrow as possible. Test important customer journeys. Then block what you understand.&lt;/p&gt;
&lt;h2&gt;4. “It cannot understand our business”&lt;/h2&gt;
&lt;p&gt;Correct. This may be the most important criticism on the list.&lt;/p&gt;
&lt;p&gt;A generic WAF cannot know that customer A should never see customer B's invoice. It cannot know whether buying 400 concert tickets is normal wholesale activity or scalping. It cannot decide whether a bank transfer fits the customer's history.&lt;/p&gt;
&lt;p&gt;Many serious API failures involve valid-looking requests used in the wrong context. The &lt;a href="https://owasp.org/API-Security/editions/2023/en/0x11-t10/"&gt;OWASP API Security Top 10&lt;/a&gt; is full of problems involving object ownership, authentication, permissions, resource consumption and sensitive business flows.&lt;/p&gt;
&lt;p&gt;Those controls need application context.&lt;/p&gt;
&lt;p&gt;There is still work suited to the edge: reject malformed requests, enforce broad limits, filter known exploit patterns and record what reached a sensitive route. A wider WAAP service may also add API schemas, bot signals and account-abuse controls. The application remains responsible for the final business decision.&lt;/p&gt;
&lt;h2&gt;5. “We already have a CDN”&lt;/h2&gt;
&lt;p&gt;You may already have the machinery for a WAF. That does not mean it is protecting anything.&lt;/p&gt;
&lt;p&gt;Is the managed ruleset enabled? Is it logging or blocking? Does it cover every public hostname and API version? Can an attacker connect directly to the origin? Are large or compressed request bodies inspected? Has anyone reviewed the exclusions since the last application release?&lt;/p&gt;
&lt;p&gt;A WAF only protects traffic that passes through it. Cloudflare's own troubleshooting guide says it only mitigates proxied traffic. AWS separately documents how to restrict an origin so visitors cannot bypass CloudFront and reach it directly.&lt;/p&gt;
&lt;p&gt;“We have a CDN” is an architecture statement. “All public traffic crosses an active, tested policy” is a security statement.&lt;/p&gt;
&lt;h2&gt;6. “A WAF will not stop a huge DDoS attack”&lt;/h2&gt;
&lt;p&gt;Also true.&lt;/p&gt;
&lt;p&gt;If an attack fills the network connection in front of an on-premises WAF, the appliance may be functioning perfectly while the website remains unreachable. Volumetric attacks need upstream capacity: an ISP, cloud network, CDN or dedicated scrubbing service able to absorb them before they reach the constrained link.&lt;/p&gt;
&lt;p&gt;Application-layer attacks are different. They target expensive searches, login endpoints, uncached pages, GraphQL queries or API operations that consume disproportionate origin resources. Rate limits and request-aware controls can help there.&lt;/p&gt;
&lt;p&gt;This is why the distinction between WAF and WAAP matters. A classic WAF filters HTTP requests. A WAAP bundle may combine that with bot management, API protection and application-layer DDoS controls. The acronym does not tell you which controls are included, licensed or switched on.&lt;/p&gt;
&lt;h2&gt;7. “Bots just rotate their IP addresses”&lt;/h2&gt;
&lt;p&gt;Yes, and an IP blocklist on its own is a fairly tired answer.&lt;/p&gt;
&lt;p&gt;Modern abuse can arrive through residential proxies, mobile networks, cloud platforms and large pools of short-lived addresses. If the only question is “have we seen this IP before?”, the attacker often wins by changing it.&lt;/p&gt;
&lt;p&gt;Useful bot management combines several weaker signals: request rate, route, session behaviour, account outcome, headers, network characteristics and browser evidence. The response can vary too. A suspicious request might be logged, slowed, challenged or given a tighter limit instead of being permanently blocked.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://cheatsheetseries.owasp.org/cheatsheets/Bot_Management_and_Anti-Automation_Cheat_Sheet.html"&gt;OWASP's bot-management guidance&lt;/a&gt; makes the goal clear: raise the cost of abusive automation while leaving legitimate people and useful bots alone.&lt;/p&gt;
&lt;p&gt;An IP list is easier. It is also further from the problem.&lt;/p&gt;
&lt;h2&gt;8. “It is another expensive security subscription”&lt;/h2&gt;
&lt;p&gt;Sometimes it is. WAF pricing can be a peculiar experience because a business may pay to inspect millions of requests it never wanted.&lt;/p&gt;
&lt;p&gt;The fair comparison is not “WAF bill versus zero”. It is the WAF bill against origin compute, emergency engineering, fraud, scraping, support calls, application downtime and the cost of investigating an incident with poor logs.&lt;/p&gt;
&lt;p&gt;That does not guarantee the WAF wins. A brochure site with no accounts, no API and almost no dynamic input may need little more than sensible CDN protection, origin restriction and good patching. A busy login or checkout path under constant automated abuse has a different calculation.&lt;/p&gt;
&lt;p&gt;The control should match the exposure. Buying the largest WAAP bundle available is not a security strategy.&lt;/p&gt;
&lt;h2&gt;9. “It is not set-and-forget”&lt;/h2&gt;
&lt;p&gt;No useful security control is.&lt;/p&gt;
&lt;p&gt;Applications change. New endpoints appear. Old APIs stay online longer than expected. Managed rules are updated. Attack traffic changes. An exclusion created during an incident quietly survives for three years.&lt;/p&gt;
&lt;p&gt;A WAF needs an owner, observable decisions, staged changes and periodic review. Virtual patches need expiry dates. Important customer journeys need regression tests. Logs need someone who will look at them.&lt;/p&gt;
&lt;p&gt;If nobody will operate the WAF, that is a legitimate reason not to buy an elaborate one. A permanently ignored dashboard is not defence in depth. It is interior decoration.&lt;/p&gt;
&lt;h2&gt;10. “Putting it inline creates another point of failure”&lt;/h2&gt;
&lt;p&gt;It does.&lt;/p&gt;
&lt;p&gt;A bad rule can block a site globally. A provider can have an outage. A self-hosted appliance can fail open or fail closed. In 2019, Cloudflare published a detailed account of how a WAF rule containing a poorly performing regular expression exhausted CPUs across its network.&lt;/p&gt;
&lt;p&gt;Inline controls need the same engineering discipline as the applications behind them: staged rollout, rollback, monitoring, tested failure modes and a clear way to recover.&lt;/p&gt;
&lt;p&gt;The origin, load balancer, DNS provider, identity service and database are points of failure too. We accept those dependencies when the service is worth it, then engineer around their failures. A WAF deserves the same treatment.&lt;/p&gt;
&lt;h2&gt;So, do you need a WAF?&lt;/h2&gt;
&lt;p&gt;Maybe not.&lt;/p&gt;
&lt;p&gt;If the site is genuinely static, low value and already protected by a capable edge, a premium WAAP service may solve very little. If nobody will tune it, test it or respond to its alerts, the product may create more confidence than protection.&lt;/p&gt;
&lt;p&gt;The case becomes much stronger when the application has accounts, payments, personal information, valuable APIs, third-party dependencies, slow patch cycles or a history of automated abuse. It becomes stronger again when the same edge can protect the origin, control bots, limit expensive routes and leave useful evidence for the people investigating incidents.&lt;/p&gt;
&lt;p&gt;A &lt;a href="/products/waf/"&gt;web application firewall&lt;/a&gt; does not make an insecure application secure. The honest claim is smaller: applications have bugs, patches take time and the public internet is noisy. A well-run WAF gives that noise one more place to stop before it becomes your application's problem.&lt;/p&gt;</content><category term="Application Security"></category><category term="WAF"></category><category term="WAAP"></category><category term="Application Security"></category><category term="API Security"></category><category term="Bot Management"></category><category term="DDoS Protection"></category></entry></feed>