<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Peakhour.IO - Edge Security</title><link href="https://www.peakhour.io/" rel="alternate"></link><link href="https://www.peakhour.io/feeds/tag/edge-security.atom.xml" rel="self"></link><id>https://www.peakhour.io/</id><updated>2026-08-01T11:40:00+10:00</updated><entry><title>Keep Your CDN. Add Proxy and Bot Decisions at the Edge.</title><link href="https://www.peakhour.io/blog/proxy-bot-decisions-existing-cdn/" rel="alternate"></link><published>2026-08-01T11:40:00+10:00</published><updated>2026-08-01T11:40:00+10:00</updated><author><name>AC</name></author><id>tag:www.peakhour.io,2026-08-01:/blog/proxy-bot-decisions-existing-cdn/</id><summary type="html">&lt;p&gt;Replacing a CDN is not the only way to improve bot and proxy controls. The harder requirement is preserving trusted client context, enforceable policy, and decision evidence across the request path.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Security projects often begin with a false choice: replace the current CDN or accept the controls it already provides.&lt;/p&gt;
&lt;p&gt;Real environments are messier. A business may have a long-term CDN contract, cloud-specific routing, established cache rules, a migration freeze, or applications that cannot all move together. The security problem still exists. Residential proxy traffic, credential stuffing, scraping, API abuse, and Layer 7 floods do not wait for a platform consolidation programme.&lt;/p&gt;
&lt;p&gt;&lt;a href="/solutions/bring-your-own-edge/"&gt;Peakhour Bring Your Own Edge&lt;/a&gt; supports two first-class paths: Peakhour Edge can be the delivery layer, or Peakhour intelligence can operate alongside the edge provider already in place. The product value is not the diagram. It is retaining one decision model for request context, policy, action, and evidence in either deployment.&lt;/p&gt;
&lt;h2&gt;Decide Where the Authoritative Observation Happens&lt;/h2&gt;
&lt;p&gt;An application behind a CDN sees a connection from the CDN, not necessarily the original client-facing connection. That affects IP provenance, TLS fingerprints, geography, and rate counters.&lt;/p&gt;
&lt;p&gt;Before adding another control, map the path:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;client → existing edge → Peakhour decision point → origin
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;or:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;client → Peakhour Edge → origin
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;For every field used by policy, record where it was observed and who is allowed to set it. Client-supplied copies of forwarding or fingerprint headers must be removed at the trusted boundary. The authoritative edge can then set the value passed downstream.&lt;/p&gt;
&lt;p&gt;This is not bookkeeping. A rate limit built on a spoofable forwarded address is a client-controlled rate limit. A TLS fingerprint calculated at origin may describe the intermediary rather than the browser. Provenance determines whether the signal can safely change an action.&lt;/p&gt;
&lt;h2&gt;Keep Policy Close to the Consequence&lt;/h2&gt;
&lt;p&gt;A decision point earns its place only if it can still protect the route. It needs to prevent avoidable origin work, slow repeated behaviour, challenge an interactive browser, block a confirmed attack, or preserve a clean path during a flood.&lt;/p&gt;
&lt;p&gt;Peakhour combines IP intelligence, residential proxy detection, fingerprints, credentials, route behaviour, bot state, rate thresholds, and WAAP findings in that request path. The action can be allow, log, challenge, rate limit, or block. The existing CDN can remain responsible for the delivery work it already does well.&lt;/p&gt;
&lt;p&gt;This matters because enrichment without enforcement creates a timing and ownership gap. A lookup result delivered after the application has rendered a page, queried a database, or changed account state may still help an investigation. It did not protect that request.&lt;/p&gt;
&lt;p&gt;Network intelligence is useful on account creation, login, and password-reset routes when the signal remains connected to the request. Peakhour carries that context through to route-specific action and retains the outcome.&lt;/p&gt;
&lt;h2&gt;Migrate a Decision, Not the Whole Estate&lt;/h2&gt;
&lt;p&gt;A staged deployment can begin with one abused route:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Observe the request at the trusted boundary.&lt;/li&gt;
&lt;li&gt;Forward or derive the fields required by the policy.&lt;/li&gt;
&lt;li&gt;Run the new decision in monitor mode.&lt;/li&gt;
&lt;li&gt;Compare it with current CDN and origin outcomes.&lt;/li&gt;
&lt;li&gt;Apply one reversible action.&lt;/li&gt;
&lt;li&gt;Expand only after false positives and operational ownership are understood.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Login, account creation, search, scraping targets, and expensive API operations are good candidates because their behaviour is measurable and their business consequence is clear.&lt;/p&gt;
&lt;p&gt;Duplicating every rule in two systems is not a migration strategy. Decide which layer owns each action, how conflicts are resolved, and which record is authoritative. A request should not be challenged twice because two providers reached the same conclusion independently.&lt;/p&gt;
&lt;h2&gt;Preserve Cache and Origin Context&lt;/h2&gt;
&lt;p&gt;Bot and proxy decisions affect more than authentication. Scrapers and Layer 7 floods consume cache, transformation, application, and origin capacity.&lt;/p&gt;
&lt;p&gt;A useful decision record can include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;cache status and whether the request reached origin;&lt;/li&gt;
&lt;li&gt;route and request cost class;&lt;/li&gt;
&lt;li&gt;proxy, IP, fingerprint, credential, and bot evidence;&lt;/li&gt;
&lt;li&gt;rate-limit state and selected action;&lt;/li&gt;
&lt;li&gt;response status and origin health;&lt;/li&gt;
&lt;li&gt;policy revision and enforcement point.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That joined record shows whether a control actually protected capacity. Blocking more requests is not inherently better. Serving clean cache hits while throttling expensive automated misses may produce a stronger outcome than a broad deny rule.&lt;/p&gt;
&lt;h2&gt;Make the Trust Boundary Explainable&lt;/h2&gt;
&lt;p&gt;NIST's &lt;a href="https://csrc.nist.gov/pubs/sp/800/207/final"&gt;Zero Trust Architecture&lt;/a&gt; frames access around explicit resource decisions rather than implicit trust in network location. The same discipline helps at an application edge: evaluate the request from current evidence, enforce a resource-specific policy, and retain enough information to explain the decision.&lt;/p&gt;
&lt;p&gt;An existing CDN is not an obstacle to that model. An undefined trust boundary is.&lt;/p&gt;
&lt;p&gt;Use the delivery reality you have. Identify the client-facing observation point, choose the routes where better context can change an outcome, and assign policy ownership. Move delivery layers when the operational case supports it—not because a security feature forced an all-or-nothing migration.&lt;/p&gt;</content><category term="Security"></category><category term="Edge Security"></category><category term="CDN"></category><category term="Bot Management"></category><category term="Residential Proxies"></category><category term="Bring Your Own Edge"></category></entry><entry><title>A Proxy Flag Is Not a Security Policy</title><link href="https://www.peakhour.io/blog/proxy-flag-is-not-a-security-policy/" rel="alternate"></link><published>2026-08-01T11:00:00+10:00</published><updated>2026-08-01T11:00:00+10:00</updated><author><name>AC</name></author><id>tag:www.peakhour.io,2026-08-01:/blog/proxy-flag-is-not-a-security-policy/</id><summary type="html">&lt;p&gt;Residential proxy detection is useful evidence. The security decision still has to account for the route, credentials, client history, behaviour, and cost of getting the action wrong.&lt;/p&gt;</summary><content type="html">&lt;p&gt;At Peakhour, a residential proxy match changes how much trust we place in a request. It never selects the action on its own.&lt;/p&gt;
&lt;p&gt;The match tells us that the network presenting the traffic may not be where the operator is sitting. Whether that matters depends on what the request is trying to do, what else is known about the client, and the cost of getting the action wrong. Treating a proxy label as policy collapses those questions into one bit. The rule becomes easy to configure and hard to operate.&lt;/p&gt;
&lt;p&gt;&lt;a href="/products/residential-proxy-detection/"&gt;Residential proxy detection&lt;/a&gt; therefore sits inside the live request decision beside IP reputation, credentials, device history, network fingerprints, behaviour, route sensitivity, and recent outcomes. It changes the level of evidence we require.&lt;/p&gt;
&lt;h2&gt;The Same Signal Means Different Things on Different Routes&lt;/h2&gt;
&lt;p&gt;Consider three requests from the same residential proxy exit:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A visitor opens a cached product page.&lt;/li&gt;
&lt;li&gt;A client tries one password against 200 accounts.&lt;/li&gt;
&lt;li&gt;An authenticated user changes the recovery email on a high-value account.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The network fact is identical. The consequences are not.&lt;/p&gt;
&lt;p&gt;The first request may need no action beyond logging. The second has a pattern consistent with credential stuffing and needs a shared limit or block. The third may justify step-up verification because the action can transfer control of an account. A site-wide proxy deny rule misses those distinctions.&lt;/p&gt;
&lt;p&gt;This is also why a global risk score can be frustrating in production. A score can help rank events, but the operator still needs to know what raised it and which action is proportionate. Peakhour's concern is where that context meets enforcement: on the request path, before origin work and account state changes occur.&lt;/p&gt;
&lt;h2&gt;Residential Does Not Mean One Person&lt;/h2&gt;
&lt;p&gt;Public IP addresses are weak identity keys even when no proxy is involved. Carrier-grade NAT allows many subscribers to share address space; &lt;a href="https://www.rfc-editor.org/rfc/rfc6598"&gt;RFC 6598&lt;/a&gt; reserves a shared range specifically for that purpose. Households, offices, mobile networks, privacy services, and public Wi-Fi also put unrelated users behind common addresses.&lt;/p&gt;
&lt;p&gt;A residential proxy complicates the picture further. The address belongs to a real consumer network, but the request may have originated elsewhere. A clean reputation may mean the exit is new. A poor reputation may reflect one abusive user while ordinary subscribers share the same public address.&lt;/p&gt;
&lt;p&gt;This cuts both ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Absence from a proxy list is not proof that the request is direct.&lt;/li&gt;
&lt;li&gt;Presence on a proxy list is not proof that the request is malicious.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Google's 2026 disruption of the IPIDEA network showed the scale of the timing problem. Google identified hundreds of Android applications and thousands of Windows binaries connected with the proxy infrastructure, and observed many tracked threat groups using its exits. The investigation also found multiple SDK brands and reseller relationships feeding shared infrastructure. The details are in Google's &lt;a href="https://cloud.google.com/blog/topics/threat-intelligence/disrupting-largest-residential-proxy-network"&gt;IPIDEA disruption report&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A provider label or yesterday's reputation cannot carry the whole decision.&lt;/p&gt;
&lt;h2&gt;Build the Decision from the Request Outward&lt;/h2&gt;
&lt;p&gt;A workable policy starts with the route.&lt;/p&gt;
&lt;p&gt;For each protected route, record:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;what the request can read, change, or spend;&lt;/li&gt;
&lt;li&gt;whether it creates expensive application or database work;&lt;/li&gt;
&lt;li&gt;which identity is available, such as account, session, API key, or none;&lt;/li&gt;
&lt;li&gt;whether an interactive challenge is possible;&lt;/li&gt;
&lt;li&gt;what a false block would cost the user and the business;&lt;/li&gt;
&lt;li&gt;which recent outcomes make repetition suspicious.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Then add the network and client evidence. A residential proxy result becomes more useful when it agrees with other observations: a breached credential, an unseen device, a fingerprint shared across rotating IPs, failed outcomes across many accounts, an invalid route sequence, or an abnormal request rate.&lt;/p&gt;
&lt;p&gt;The policy can then choose among real actions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Allow&lt;/strong&gt; when the route is low risk and the session is otherwise consistent.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Log&lt;/strong&gt; when the signal is new or the cost of intervention is higher than the current evidence supports.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Challenge&lt;/strong&gt; when the client can provide more evidence and there is a safe recovery path.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rate limit&lt;/strong&gt; when repeated behaviour is the problem, especially across accounts, fingerprints, API credentials, or costly operations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Block&lt;/strong&gt; when the evidence is strong, harm is current, and narrower controls cannot protect the route.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Peakhour evaluates that context in the request path. Browser signals can add evidence when a browser is present, while API traffic can still be assessed without requiring JavaScript. The selected action and its inputs remain part of the decision record rather than disappearing into a standalone lookup.&lt;/p&gt;
&lt;h2&gt;Scores Need Reasons and Actions Need Owners&lt;/h2&gt;
&lt;p&gt;A security team should be able to answer three questions after a request is challenged or blocked:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Which observations changed the decision?&lt;/li&gt;
&lt;li&gt;Which policy revision selected the action?&lt;/li&gt;
&lt;li&gt;Did the action protect the route without breaking legitimate completion?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If the only retained field is &lt;code&gt;risk_score: 87&lt;/code&gt;, review becomes guesswork. Keep the useful components: route, proxy result, IP category, fingerprint provenance, account or token state, recent failures, threshold state, action, policy revision, and origin outcome.&lt;/p&gt;
&lt;p&gt;Every enforcement rule also needs an owner and an expiry condition. Proxy networks change. Client populations change. A rule created during an incident should not become permanent merely because nobody knows why it exists.&lt;/p&gt;
&lt;p&gt;Start in observation mode on one sensitive route. Measure ordinary variation, proxy prevalence, successful completion, challenge outcomes, and false positives. Move to enforcement when the evidence supports a specific action. Roll back when the customer cost exceeds the risk reduction.&lt;/p&gt;
&lt;p&gt;On a sensitive route, the proxy match may justify corroborating evidence or a reversible action. On a low-risk route, logging may be enough. In both cases, the team should be able to show which facts changed the decision and what happened afterwards. That is how proxy intelligence becomes an operable control rather than another label in a feed.&lt;/p&gt;</content><category term="Security"></category><category term="Residential Proxies"></category><category term="Bot Management"></category><category term="Account Protection"></category><category term="Risk Scoring"></category><category term="Edge Security"></category></entry></feed>