<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Peakhour.IO - WAAP</title><link href="https://www.peakhour.io/" rel="alternate"></link><link href="https://www.peakhour.io/feeds/tag/waap.atom.xml" rel="self"></link><id>https://www.peakhour.io/</id><updated>2026-07-28T10:00:00+10:00</updated><entry><title>When and Why to Use a WAF: A Guide for WAF Sceptics</title><link href="https://www.peakhour.io/blog/when-and-why-to-use-a-waf/" rel="alternate"></link><published>2026-07-28T10:00:00+10:00</published><updated>2026-07-28T10:00:00+10:00</updated><author><name>AC</name></author><id>tag:www.peakhour.io,2026-07-28:/blog/when-and-why-to-use-a-waf/</id><summary type="html">&lt;p&gt;WAFs are neither useless nor a security force field. Here is what they are good at, where they fail, and when putting one in front of an application makes sense.&lt;/p&gt;</summary><content type="html">&lt;p&gt;There are two popular opinions about web application firewalls.&lt;/p&gt;
&lt;p&gt;The first is that every public application needs one. Turn it on, enable the managed rules and enjoy protection from the OWASP Top 10, zero-days, bots and DDoS attacks.&lt;/p&gt;
&lt;p&gt;The second is that WAFs are expensive regex machines. They block customers, miss clever attacks and give management a green tick while the application remains vulnerable.&lt;/p&gt;
&lt;p&gt;The second group has better jokes. Neither group has the whole answer.&lt;/p&gt;
&lt;p&gt;A WAF is useful when it is given a job it can actually perform. It is disappointing when it is expected to understand an application better than the people who built it.&lt;/p&gt;
&lt;p&gt;The practical question is not “do WAFs work?” It is: which risks can this WAF reduce, what will it never understand, and who will operate it when the application changes?&lt;/p&gt;
&lt;h2&gt;What a WAF can see&lt;/h2&gt;
&lt;p&gt;A traditional WAF sits in the HTTP request path. It inspects requests and applies managed or custom rules before passing allowed traffic to the application.&lt;/p&gt;
&lt;p&gt;That position gives it a useful but limited view.&lt;/p&gt;
&lt;p&gt;It can see paths, methods, headers, cookies, query strings and supported request bodies. Depending on the product, it may also have access to IP reputation, network characteristics, bot signals, rate history and API schemas.&lt;/p&gt;
&lt;p&gt;It cannot naturally see the full business meaning of the request.&lt;/p&gt;
&lt;p&gt;The WAF may know that a customer requested &lt;code&gt;/api/invoices/123&lt;/code&gt;. The application knows whether that customer owns invoice 123. The WAF may see 200 valid checkout requests. The application knows whether they represent a wholesaler, a scalper or a broken integration.&lt;/p&gt;
&lt;p&gt;That boundary explains both the value and the frustration.&lt;/p&gt;
&lt;h2&gt;The criticism is mostly fair&lt;/h2&gt;
&lt;p&gt;WAF sceptics are right about several things.&lt;/p&gt;
&lt;p&gt;A determined attacker can bypass generic detection. Differences in encoding and HTTP parsing can cause a WAF and an application to interpret the same request differently. A 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;False positives are real too. Legitimate HTML, JSON, support messages or product descriptions may resemble an attack signature. Microsoft recommends introducing a WAF in detection mode, reviewing logs and tuning it before blocking. It says &lt;a href="https://learn.microsoft.com/en-us/azure/web-application-firewall/afds/waf-faq"&gt;this process may take several weeks&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A WAF also cannot fix insecure application logic. It cannot repair broken object-level authorisation, make password recovery safe or decide whether a valid-looking transaction is fraudulent. Those controls belong in the application.&lt;/p&gt;
&lt;p&gt;And, yes, putting anything inline creates another dependency. A poor rule can block real customers. A provider can have an outage. A self-hosted appliance can fail open or fail closed.&lt;/p&gt;
&lt;p&gt;These are reasons to be precise about the job. They are not reasons to send every internet request directly to the origin.&lt;/p&gt;
&lt;h2&gt;Buying time during a patch window&lt;/h2&gt;
&lt;p&gt;The best reason to have a WAF is rarely mentioned on the product page. It buys time.&lt;/p&gt;
&lt;p&gt;When a serious vulnerability appears, the correct response is to fix the affected software. But finding every instance, testing the patch and deploying it safely may take hours or days. Third-party and legacy applications can take longer.&lt;/p&gt;
&lt;p&gt;A virtual patch can narrow that exposure window. A custom rule may block the vulnerable path, reject a malicious parameter or detect the request pattern associated with the exploit while the real patch is prepared.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://cheatsheetseries.owasp.org/cheatsheets/Virtual_Patching_Cheat_Sheet.html"&gt;OWASP's virtual patching guidance&lt;/a&gt; is clear about the boundary: correcting the source is the preferred remediation. The WAF rule is a compensating control, not permission to leave the vulnerability in place.&lt;/p&gt;
&lt;p&gt;That still makes it valuable. During an incident, ten minutes and two days are very different amounts of exposure.&lt;/p&gt;
&lt;h2&gt;Stopping expensive requests earlier&lt;/h2&gt;
&lt;p&gt;Applications are expensive places to reject bad traffic.&lt;/p&gt;
&lt;p&gt;By the time a request reaches application code it may have consumed a connection, invoked authentication, queried a database, called another API or triggered a paid service. A request does not need to contain an obvious exploit to create cost. It may simply repeat an expensive operation far more often than a legitimate user would.&lt;/p&gt;
&lt;p&gt;An edge control can reject common exploit traffic and excessive requests before that work happens.&lt;/p&gt;
&lt;p&gt;This is especially useful for login, search, registration, password reset, checkout and expensive API routes. Rate limits and bot controls can respond differently based on route, session, account outcome and other available evidence instead of treating every request from an IP address as the same actor.&lt;/p&gt;
&lt;p&gt;NIST recommends applying general WAF, bot and denial-of-service controls early in the API serving stack to protect upstream systems from malicious payloads and unrestricted resource consumption. It also &lt;a href="https://csrc.nist.gov/pubs/sp/800/228/upd1/final"&gt;treats those as separate capabilities&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;That distinction matters. A classic WAF does not automatically provide sophisticated bot management or network-scale DDoS protection. A broader WAAP service may bundle them, but buyers should check the controls rather than trust the acronym.&lt;/p&gt;
&lt;h2&gt;A control you can reach during an incident&lt;/h2&gt;
&lt;p&gt;Security incidents create awkward gaps between knowing there is a problem and having the final fix ready.&lt;/p&gt;
&lt;p&gt;Perhaps one endpoint is being abused. A new exploit is spreading. Login failures are climbing. A scraper is rotating through residential proxies. An old hostname that should have disappeared is suddenly receiving traffic.&lt;/p&gt;
&lt;p&gt;A centrally managed WAF gives the operations team somewhere to make a narrow, reversible change without waiting for several application releases. They can restrict a route, add a virtual patch, change a rate limit, challenge suspicious traffic or collect more detailed events while the investigation continues.&lt;/p&gt;
&lt;p&gt;That operational separation is valuable. The application team can work on the root cause while the security or operations team reduces immediate exposure.&lt;/p&gt;
&lt;p&gt;It also needs discipline. Emergency rules require owners and expiry dates. A temporary exclusion should not survive for years. Changes should be observed before blocking where the situation allows it.&lt;/p&gt;
&lt;h2&gt;Evidence before the origin&lt;/h2&gt;
&lt;p&gt;A WAF is often discussed only as a blocking device. Its position in the request path can be just as useful for understanding what is happening.&lt;/p&gt;
&lt;p&gt;Good events can show which route was targeted, which rule matched, what action was taken and whether the request reached the origin. Rate, bot and API signals can add context. Combined with application logs, this helps teams distinguish an attack from a customer problem, a broken integration or a badly tuned rule.&lt;/p&gt;
&lt;p&gt;The same visibility can expose weaknesses in the deployment itself:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a forgotten API version receiving traffic;&lt;/li&gt;
&lt;li&gt;a hostname missing the expected policy;&lt;/li&gt;
&lt;li&gt;an origin that is still publicly reachable;&lt;/li&gt;
&lt;li&gt;an endpoint whose cost makes it an easy denial-of-service target;&lt;/li&gt;
&lt;li&gt;an exclusion that is much broader than anyone remembered.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This does not require blocking on day one. Observe mode can create value before the team is confident enough to enforce a decision.&lt;/p&gt;
&lt;h2&gt;When the case for a WAF is strong&lt;/h2&gt;
&lt;p&gt;A WAF is usually worth serious consideration when the application has several of these characteristics:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;customer accounts, payments or personal information;&lt;/li&gt;
&lt;li&gt;public APIs or expensive dynamic routes;&lt;/li&gt;
&lt;li&gt;third-party, legacy or slow-to-patch software;&lt;/li&gt;
&lt;li&gt;regular scanning, credential stuffing, scraping or automated abuse;&lt;/li&gt;
&lt;li&gt;multiple applications that need consistent emergency controls;&lt;/li&gt;
&lt;li&gt;compliance requirements for runtime web protection;&lt;/li&gt;
&lt;li&gt;an operations team able to tune rules and investigate events.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PCI DSS provides one concrete example. Since 31 March 2025, Requirement 6.4.2 requires an automated technical solution in front of applicable public-facing web applications to continually detect and prevent web attacks. The &lt;a href="https://www.pcisecuritystandards.org/faqs/1593/"&gt;PCI Security Standards Council describes the requirement&lt;/a&gt; without requiring a particular product called a WAF.&lt;/p&gt;
&lt;p&gt;Compliance is a legitimate reason to deploy the control. It is not evidence that the deployment works.&lt;/p&gt;
&lt;h2&gt;When the case is weak&lt;/h2&gt;
&lt;p&gt;Not every website needs a large WAAP contract.&lt;/p&gt;
&lt;p&gt;A genuinely static, low-value site with no accounts, API or meaningful dynamic input presents a smaller application attack surface. Basic CDN protection, origin restriction, good patching and sensible security headers may be enough.&lt;/p&gt;
&lt;p&gt;The case is also weak when nobody will own the WAF. An ignored ruleset eventually becomes noisy, stale or full of broad exclusions. A dashboard that nobody checks is not defence in depth.&lt;/p&gt;
&lt;p&gt;Be cautious when the proposed product does not match the actual problem. A signature WAF is not the complete answer to sophisticated bots. An on-premises appliance cannot absorb a volumetric attack larger than its internet connection. Edge rules cannot repair business logic. A provider's “AI-powered” label does not establish an acceptable false-positive rate.&lt;/p&gt;
&lt;p&gt;Sometimes the right answer is a smaller control. Sometimes it is a different control. The point is to buy against the risk rather than the category name.&lt;/p&gt;
&lt;h2&gt;How not to become the WAF horror story&lt;/h2&gt;
&lt;p&gt;Most bad WAF experiences begin with the same mistake: enabling everything and immediately blocking production traffic.&lt;/p&gt;
&lt;p&gt;A safer deployment looks less exciting:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Define the job. Decide which applications, routes and abuse cases the WAF is expected to cover.&lt;/li&gt;
&lt;li&gt;Put all relevant traffic through it and restrict direct access to the origin.&lt;/li&gt;
&lt;li&gt;Start managed rules and new controls in observe or count mode.&lt;/li&gt;
&lt;li&gt;Review real production-shaped traffic and tune false positives narrowly.&lt;/li&gt;
&lt;li&gt;Test login, checkout, uploads, APIs and other important customer journeys before enforcement.&lt;/li&gt;
&lt;li&gt;Give every custom rule and virtual patch an owner, reason and review date.&lt;/li&gt;
&lt;li&gt;Monitor allowed as well as blocked traffic so false negatives do not disappear from view.&lt;/li&gt;
&lt;li&gt;Keep application-level authorisation, validation and rate controls in place.&lt;/li&gt;
&lt;li&gt;Test what happens when the WAF, agent or provider is unavailable.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That is the difference between owning a control and merely paying for one.&lt;/p&gt;
&lt;h2&gt;Where this leaves us&lt;/h2&gt;
&lt;p&gt;A WAF is neither useless nor sufficient.&lt;/p&gt;
&lt;p&gt;It cannot understand every valid-looking abuse, prevent every bypass or rescue an application that ignores secure design. It introduces cost, tuning and another inline dependency.&lt;/p&gt;
&lt;p&gt;It can still stop a great deal of cheap hostile traffic, buy time during a vulnerability, prevent excessive work from reaching the origin, give operators a fast response point and leave evidence that helps explain an incident.&lt;/p&gt;
&lt;p&gt;Our two companion articles make each side of the case directly: &lt;a href="/blog/everyone-says-a-waf-is-useless/"&gt;Everyone Says a WAF Is Useless. Are They Right?&lt;/a&gt; and &lt;a href="/blog/your-application-needs-a-waf/"&gt;Your Application Needs a WAF. Just Not for the Reason You Think&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The conclusion is less catchy than either headline. Use a &lt;a href="/products/waf/"&gt;web application firewall&lt;/a&gt; when the application has something worth protecting, the WAF has a defined job and someone is responsible for operating it. Then keep fixing the code behind it.&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="Virtual Patching"></category><category term="Bot Management"></category></entry><entry><title>Your Application Needs a WAF. Just Not for the Reason You Think</title><link href="https://www.peakhour.io/blog/your-application-needs-a-waf/" rel="alternate"></link><published>2026-07-28T09:30:00+10:00</published><updated>2026-07-28T09:30:00+10:00</updated><author><name>AC</name></author><id>tag:www.peakhour.io,2026-07-28:/blog/your-application-needs-a-waf/</id><summary type="html">&lt;p&gt;A web application firewall will not fix insecure code. It can still give applications a valuable layer of protection when bugs, bots and attacks reach the front door.&lt;/p&gt;</summary><content type="html">&lt;p&gt;A web application firewall will not make bad code good.&lt;/p&gt;
&lt;p&gt;It will not repair broken access control. It will not redesign an unsafe checkout. It cannot decide whether a customer should be allowed to see a particular invoice, transfer money from an account or buy the last 200 tickets to a concert.&lt;/p&gt;
&lt;p&gt;If your public application has accounts, valuable APIs or expensive dynamic routes, you probably still need one.&lt;/p&gt;
&lt;p&gt;The case has nothing to do with an invisible shield or a promise to “solve the OWASP Top 10”. Public applications meet hostile traffic every day, software is imperfect and fixing the right thing often takes longer than attacking it.&lt;/p&gt;
&lt;p&gt;That is what a WAF is for.&lt;/p&gt;
&lt;h2&gt;The internet does not wait for your next release&lt;/h2&gt;
&lt;p&gt;Every public application receives traffic it did not ask for.&lt;/p&gt;
&lt;p&gt;Some of it is harmless background noise: crawlers looking for software that is not installed, scripts requesting old WordPress paths, scanners testing yesterday's vulnerability against every address they can find.&lt;/p&gt;
&lt;p&gt;Some of it is aimed directly at the application: SQL injection attempts, malicious uploads, path traversal, unusual encodings and requests crafted to trigger a known vulnerability.&lt;/p&gt;
&lt;p&gt;The application can reject those requests itself. Ideally, it will. But allowing every request to reach application code, authentication services, databases and third-party APIs is an expensive way to discover that something is hostile.&lt;/p&gt;
&lt;p&gt;A WAF creates an earlier decision point. It can discard common exploit traffic before the request reaches the part of the system that holds customer data or performs expensive work.&lt;/p&gt;
&lt;p&gt;That does not make the application secure. It means the application no longer has to face every cheap attack on its own.&lt;/p&gt;
&lt;h2&gt;Patches take time. WAF rules take less&lt;/h2&gt;
&lt;p&gt;The clearest reason to run a WAF is virtual patching.&lt;/p&gt;
&lt;p&gt;Suppose a serious vulnerability appears in a framework, CMS plugin or third-party product. The responsible answer is to patch it. But first the team has to identify every affected system, test the update, work around compatibility problems and arrange a safe deployment.&lt;/p&gt;
&lt;p&gt;The attacker does not have to do any of that.&lt;/p&gt;
&lt;p&gt;A targeted WAF rule can reduce the exposure while the real patch is prepared. It may block a particular path, parameter, payload or request shape associated with the exploit. It is not the final repair, but it can turn an open window into a much narrower one.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://cheatsheetseries.owasp.org/cheatsheets/Virtual_Patching_Cheat_Sheet.html"&gt;OWASP's virtual patching guidance&lt;/a&gt; is refreshingly practical about this. Fixing the source is the number-one technical remediation. A virtual patch is useful when that fix cannot happen immediately. The two controls are complementary, not rivals.&lt;/p&gt;
&lt;p&gt;This matters most for legacy applications, third-party software and systems with slow release cycles. Those are exactly the places where “just fix the code” can be correct advice and an inadequate incident response.&lt;/p&gt;
&lt;h2&gt;Your application should not absorb unlimited work&lt;/h2&gt;
&lt;p&gt;Not every damaging request contains an obvious attack string.&lt;/p&gt;
&lt;p&gt;A search request may be perfectly valid but expensive. A login attempt may fail normally while being one of a million credential-stuffing attempts. A scraper may request public pages exactly as a browser would, just much faster. A customer-facing API may trigger email, SMS, payment or database costs every time it is called.&lt;/p&gt;
&lt;p&gt;This is where a modern WAAP service goes beyond a traditional signature WAF. Rate limiting, bot management and application-layer DDoS controls can make decisions based on the route, request rate, account outcome, browser or network evidence, and the work the origin is being asked to perform.&lt;/p&gt;
&lt;p&gt;NIST recommends placing general WAF, bot and denial-of-service controls early in the API serving stack so malicious payloads and unrestricted resource consumption do not exhaust upstream systems. Importantly, &lt;a href="https://csrc.nist.gov/pubs/sp/800/228/upd1/final"&gt;NIST treats these as related but separate capabilities&lt;/a&gt;. Buying something called a WAF does not automatically mean all three are present.&lt;/p&gt;
&lt;p&gt;Reject bad or excessive work before it becomes expensive work.&lt;/p&gt;
&lt;h2&gt;Put the checks in different places&lt;/h2&gt;
&lt;p&gt;Good application security is built in layers because each layer knows something different.&lt;/p&gt;
&lt;p&gt;The application knows who owns an object, whether an account may perform an action and what a valid transaction looks like. It should remain authoritative for those decisions.&lt;/p&gt;
&lt;p&gt;The edge sees different evidence. It can compare traffic across routes and hosts, recognise widespread exploit patterns, apply an emergency rule across several applications and notice that one client is creating an unusual amount of work before the request reaches the origin.&lt;/p&gt;
&lt;p&gt;Neither view is complete.&lt;/p&gt;
&lt;p&gt;A WAF is valuable because it is independent of the code it protects. If an application developer makes a mistake, the WAF may still reject the exploit. If a WAF misses a clever request, the application should still validate it. One control can fail without immediately making the failure fatal.&lt;/p&gt;
&lt;p&gt;If either layer makes a mistake, the other still gets a chance to respond. That is the useful part of defence in depth.&lt;/p&gt;
&lt;h2&gt;It gives you somewhere to respond&lt;/h2&gt;
&lt;p&gt;During an incident, speed matters.&lt;/p&gt;
&lt;p&gt;Teams often know enough to reduce the risk before they know enough to ship the final fix. They may need to restrict a vulnerable endpoint, block an exploit pattern, lower a rate limit, challenge suspicious login traffic or temporarily exclude a region where an attack is concentrated.&lt;/p&gt;
&lt;p&gt;Doing that through application releases can be slow, especially when several services are affected. A centrally managed WAF gives operators somewhere to make a narrow, reversible change while the application teams investigate.&lt;/p&gt;
&lt;p&gt;The words “narrow” and “reversible” matter. Emergency blocks need owners and expiry dates. Rules should be tested in observe mode where time permits. Broad exclusions created during the incident should not quietly become permanent architecture.&lt;/p&gt;
&lt;p&gt;The WAF is useful here because it is an operational control, not because it knows more about the application than its developers do.&lt;/p&gt;
&lt;h2&gt;It leaves evidence at the front door&lt;/h2&gt;
&lt;p&gt;Prevention gets most of the attention, but visibility is one of the better reasons to have a WAF.&lt;/p&gt;
&lt;p&gt;When an application behaves strangely, the team needs to know what arrived before the failure. Which routes were targeted? Were requests blocked or allowed? Did the traffic share a network, client pattern or payload? Was a rate limit crossed? Did the attacker reach the origin directly?&lt;/p&gt;
&lt;p&gt;Useful WAF events can answer part of that story. Combined with origin and application logs, they help distinguish a real attack from a broken integration, a customer mistake or a badly tuned rule.&lt;/p&gt;
&lt;p&gt;They can also reveal traffic that nobody knew was public: an old API version, forgotten hostname, administrative route or direct-origin path.&lt;/p&gt;
&lt;p&gt;Logs are not automatically useful. A million unexplained rule matches can be worse than a smaller set of events tied to route, action and outcome. But without evidence at the entry point, incident response starts with a large blind spot.&lt;/p&gt;
&lt;h2&gt;Compliance is a reason, but not the best one&lt;/h2&gt;
&lt;p&gt;For organisations handling payment-card data, a runtime application control may not be optional. Since 31 March 2025, PCI DSS Requirement 6.4.2 requires an automated technical solution in front of applicable public-facing web applications to continually detect and prevent web attacks.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://www.pcisecuritystandards.org/faqs/1593/"&gt;PCI Security Standards Council describes the requirement&lt;/a&gt; without mandating a particular product called a WAF.&lt;/p&gt;
&lt;p&gt;That distinction matters. Compliance can justify the control, but it does not prove the control is effective. A WAF in log-only mode with nobody reading the alerts is not much of a defence. Neither is one with a public origin that attackers can reach directly.&lt;/p&gt;
&lt;p&gt;Passing an audit is a business requirement. Blocking useful attacks without blocking customers is the security requirement.&lt;/p&gt;
&lt;h2&gt;A WAF needs to be operated, not merely purchased&lt;/h2&gt;
&lt;p&gt;The case for a WAF comes with a condition: somebody has to own it.&lt;/p&gt;
&lt;p&gt;Managed rules need to be introduced carefully. Legitimate traffic needs to be observed. False positives need narrow corrections rather than sweeping allowlists. Important customer journeys need tests. Virtual patches need to be removed after the underlying vulnerability is fixed. Origins need to be locked down so the edge cannot be bypassed.&lt;/p&gt;
&lt;p&gt;The job is not finished when the DNS changes.&lt;/p&gt;
&lt;p&gt;The right first step is often detection rather than immediate blocking. Learn what normal traffic looks like, identify the noisy rules, find missing hostnames and understand which requests are expensive. Then move well-understood controls into enforcement.&lt;/p&gt;
&lt;p&gt;A badly operated WAF can block customers, miss attacks and create false confidence. That is a reason to operate it properly, not a reason to give the application no independent protection at all.&lt;/p&gt;
&lt;h2&gt;What a WAF is actually for&lt;/h2&gt;
&lt;p&gt;A WAF should make exploitation harder, give operators a faster response and reduce what reaches the origin. In practice that means stopping familiar attack traffic, buying time during a vulnerability, putting limits in front of expensive routes and recording enough evidence to explain what arrived.&lt;/p&gt;
&lt;p&gt;Developers still own secure design. The WAF gives them another layer, not an exemption.&lt;/p&gt;
&lt;p&gt;Our companion article, &lt;a href="/blog/everyone-says-a-waf-is-useless/"&gt;Everyone Says a WAF Is Useless. Are They Right?&lt;/a&gt;, takes the sceptical case seriously. WAFs can be bypassed. They can cause false positives. They create cost and another inline dependency.&lt;/p&gt;
&lt;p&gt;Those are real constraints. They define how a &lt;a href="/products/waf/"&gt;web application firewall&lt;/a&gt; should be deployed and judged.&lt;/p&gt;
&lt;p&gt;They do not change the basic reality: bugs happen, patches take time and bots are cheap. It is sensible to make hostile traffic cross one more independent decision point before it reaches the application.&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="Virtual Patching"></category><category term="Bot Management"></category></entry><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>