<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Peakhour.IO - API Security</title><link href="https://www.peakhour.io/" rel="alternate"></link><link href="https://www.peakhour.io/feeds/api-security.atom.xml" rel="self"></link><id>https://www.peakhour.io/</id><updated>2026-06-19T00:00:00+10:00</updated><entry><title>An Operating Model for API and Account Protection</title><link href="https://www.peakhour.io/blog/api-account-protection-operating-model/" rel="alternate"></link><published>2026-06-19T00:00:00+10:00</published><updated>2026-06-19T00:00:00+10:00</updated><author><name>AC</name></author><id>tag:www.peakhour.io,2026-06-19:/blog/api-account-protection-operating-model/</id><summary type="html">&lt;p&gt;API and account protection works best as an operating model: map routes, classify signals, choose proportionate actions, preserve evidence, and tune controls from monitor to enforce.&lt;/p&gt;</summary><content type="html">&lt;p&gt;API and account protection is often discussed as a stack of controls: authentication, MFA, bot detection, rate limiting, WAF rules, logging, fraud checks, and incident response. Those controls matter, but the missing piece is usually the operating model.&lt;/p&gt;
&lt;p&gt;Who owns the route? Which signals are trusted? What action should happen before origin? What evidence is preserved? When does a rule move from monitor to enforce? How does the team know whether it helped or hurt?&lt;/p&gt;
&lt;p&gt;Without those answers, account protection becomes a set of disconnected gates. The login page has one policy. The mobile API has another. Password reset is reviewed only after support tickets appear. Rate limits are tuned during incidents, then left in place because nobody wants to touch them.&lt;/p&gt;
&lt;p&gt;A better model is route first, signal second, action third, evidence always.&lt;/p&gt;
&lt;h2&gt;1. Map the Routes That Matter&lt;/h2&gt;
&lt;p&gt;Start with the account and API routes that change trust, money, access, or user state. Do not begin with every endpoint in the estate. Begin with the flows where abuse has a clear consequence.&lt;/p&gt;
&lt;p&gt;Typical routes include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Login and token issue.&lt;/li&gt;
&lt;li&gt;Token refresh.&lt;/li&gt;
&lt;li&gt;Password reset start and completion.&lt;/li&gt;
&lt;li&gt;MFA enrolment and recovery.&lt;/li&gt;
&lt;li&gt;New account registration.&lt;/li&gt;
&lt;li&gt;Email, phone, address, and password changes.&lt;/li&gt;
&lt;li&gt;Stored payment, wallet, loyalty, or checkout actions.&lt;/li&gt;
&lt;li&gt;High-volume read APIs.&lt;/li&gt;
&lt;li&gt;Partner or machine-to-machine API access.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For each route, record the owner, normal traffic shape, expected clients, authentication method, downstream cost, and likely abuse case. A login endpoint and a product search endpoint can both be APIs, but they should not have the same policy.&lt;/p&gt;
&lt;p&gt;This is where &lt;a href="/solutions/use-case/traffic-control/"&gt;traffic control&lt;/a&gt; becomes part of account security. The route tells the edge what kind of decision is being made: allow, challenge, throttle, block, route, cache, or log.&lt;/p&gt;
&lt;h2&gt;2. Classify the Signals Before Choosing the Action&lt;/h2&gt;
&lt;p&gt;A useful account decision combines several signal families:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Identity and token state.&lt;/li&gt;
&lt;li&gt;Credential exposure or failed-login history.&lt;/li&gt;
&lt;li&gt;Residential proxy, VPN, hosting, mobile, or office network context.&lt;/li&gt;
&lt;li&gt;IP reputation and ASN behaviour.&lt;/li&gt;
&lt;li&gt;Client, browser, TLS, or HTTP fingerprint.&lt;/li&gt;
&lt;li&gt;Request rate and response codes.&lt;/li&gt;
&lt;li&gt;Route sequence and session behaviour.&lt;/li&gt;
&lt;li&gt;Account event context, such as reset, recovery, or profile change.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The mistake is treating any one signal as the whole answer. A residential proxy signal on a low-risk route may only need monitoring. The same signal on a password reset route, with repeated failures and a first-seen client, should be handled differently.&lt;/p&gt;
&lt;p&gt;This is the job of &lt;a href="/solutions/use-case/contextual-security/"&gt;contextual security&lt;/a&gt;: apply friction where the request context justifies it, while keeping trusted users on the shortest path.&lt;/p&gt;
&lt;h2&gt;3. Choose Actions That Match Route Risk&lt;/h2&gt;
&lt;p&gt;Not every suspicious request should be blocked. Blocking is one action, and it should be available, but account protection needs a wider set of responses.&lt;/p&gt;
&lt;p&gt;Common actions include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Allow and record.&lt;/li&gt;
&lt;li&gt;Log only.&lt;/li&gt;
&lt;li&gt;Add to a rate-limit zone.&lt;/li&gt;
&lt;li&gt;Throttle or return a 429.&lt;/li&gt;
&lt;li&gt;Require a challenge.&lt;/li&gt;
&lt;li&gt;Require step-up authentication.&lt;/li&gt;
&lt;li&gt;Deny the request.&lt;/li&gt;
&lt;li&gt;Route to a safer path.&lt;/li&gt;
&lt;li&gt;Alert security or support.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="/products/advanced-rate-limiting/"&gt;Advanced rate limiting&lt;/a&gt; is useful here because the counter does not have to be the source IP. For API traffic, a policy may key on an Authorization header, token, fingerprint, route, cookie, response code, or a combination of fields. For account flows, response-aware limits can count failed logins or suspicious reset attempts, then apply a stricter rule on the next request.&lt;/p&gt;
&lt;p&gt;This matters for distributed abuse. If attackers rotate through residential proxies, a simple IP counter sees fragments. A route-aware, signal-aware policy can still recognise the behaviour that matters.&lt;/p&gt;
&lt;h2&gt;4. Preserve Evidence While the Control Runs&lt;/h2&gt;
&lt;p&gt;A security decision that cannot be explained will be difficult to tune and harder to defend internally. Teams need to know why a request was allowed, challenged, throttled, or blocked.&lt;/p&gt;
&lt;p&gt;The evidence should keep the request, route, signal, policy, action, and outcome together. That includes useful fields such as the matched route, rate-limit zone, proxy or IP classification, fingerprint, response code, decision reason, and timestamp.&lt;/p&gt;
&lt;p&gt;&lt;a href="/products/log-forwarding/"&gt;Log forwarding&lt;/a&gt; is part of the operating model, not an afterthought. If the evidence only exists in a dashboard screenshot or a short-lived edge event, support, fraud, platform, and security teams will end up reconstructing incidents by hand. Forwarded logs should carry enough context into the SIEM, object store, or observability pipeline for investigation and tuning.&lt;/p&gt;
&lt;p&gt;This also protects the rollout. When a control is in monitor mode, evidence shows who would have been affected. When it is enforced, evidence shows who was affected and why.&lt;/p&gt;
&lt;h2&gt;5. Tune From Monitor to Enforce&lt;/h2&gt;
&lt;p&gt;The safest way to deploy account and API controls is usually staged:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Monitor the route and collect baseline evidence.&lt;/li&gt;
&lt;li&gt;Add low-friction actions, such as logging or soft thresholds.&lt;/li&gt;
&lt;li&gt;Review false positives, support impact, and route ownership.&lt;/li&gt;
&lt;li&gt;Enforce on the clearest abuse patterns.&lt;/li&gt;
&lt;li&gt;Expand enforcement only where evidence supports it.&lt;/li&gt;
&lt;li&gt;Keep rollback and emergency tightening paths documented.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This avoids two common failures. The first is leaving controls in monitor mode forever because nobody owns the decision to enforce. The second is enforcing too broadly and creating customer friction that causes the business to bypass the control.&lt;/p&gt;
&lt;p&gt;A staged model gives security, platform, product, and support teams a shared language. The rule is not "on" or "off". It has a route, a risk case, an action, evidence, and a review cycle.&lt;/p&gt;
&lt;h2&gt;6. Fit the Model to the Edge You Already Run&lt;/h2&gt;
&lt;p&gt;Some teams want Peakhour as the active application edge. Others need to keep Cloudflare, Fastly, CloudFront, another CDN, or an existing hosting edge in place. That deployment choice should not change the operating principle.&lt;/p&gt;
&lt;p&gt;The goal is still to classify request context before origin, apply the right action, and preserve evidence. &lt;a href="/solutions/bring-your-own-edge/"&gt;Bring Your Own Edge&lt;/a&gt; matters because many organisations cannot redesign delivery just to improve account protection. They need a control path that fits the architecture they already operate.&lt;/p&gt;
&lt;p&gt;The practical test is straightforward: can the team explain what happened to a sensitive account or API request without guessing?&lt;/p&gt;
&lt;p&gt;If the answer is no, the next step is not another generic control. It is an operating model: map the route, classify the signals, choose the action, preserve the evidence, and tune the policy from observed behaviour.&lt;/p&gt;
&lt;p&gt;That is how API and account protection becomes something the organisation can run, not just something it bought.&lt;/p&gt;</content><category term="API Security"></category><category term="API Security"></category><category term="Account Protection"></category><category term="Log Forwarding"></category><category term="Rate Limiting"></category><category term="Contextual Security"></category><category term="Traffic Control"></category></entry><entry><title>API Bot Abuse Does Not Stay in One Endpoint</title><link href="https://www.peakhour.io/blog/api-bot-abuse-login-checkout-account-journeys/" rel="alternate"></link><published>2026-06-19T00:00:00+10:00</published><updated>2026-06-19T00:00:00+10:00</updated><author><name>AC</name></author><id>tag:www.peakhour.io,2026-06-19:/blog/api-bot-abuse-login-checkout-account-journeys/</id><summary type="html">&lt;p&gt;API bot abuse moves across login, checkout, and account journeys. Defenders need route-aware bot, rate, and account controls that follow the campaign rather than treating each endpoint as a separate incident.&lt;/p&gt;</summary><content type="html">&lt;p&gt;API bot abuse rarely stays politely inside one endpoint.&lt;/p&gt;
&lt;p&gt;A campaign may start at login, move through token refresh, test account recovery, check saved addresses, probe checkout, abuse coupons, scrape product availability, and then return to account actions once a working session is found. Looking at each route alone makes the activity seem smaller than it is.&lt;/p&gt;
&lt;p&gt;The pattern matters more than the individual request.&lt;/p&gt;
&lt;p&gt;That is why &lt;a href="/solutions/use-case/api-bot-protection/"&gt;API bot protection&lt;/a&gt; has to follow journeys, not just endpoints.&lt;/p&gt;
&lt;h2&gt;Login Is the First Measurement Point&lt;/h2&gt;
&lt;p&gt;Login endpoints are the obvious place to look for bot abuse. Credential stuffing, password spraying, brute force attempts, and token abuse all show up there.&lt;/p&gt;
&lt;p&gt;But the login endpoint is only the first measurement point. Attackers are not trying to create a failed-login graph. They are trying to find usable accounts and move to the next action.&lt;/p&gt;
&lt;p&gt;A bot campaign may keep failed attempts low per IP address. It may rotate through residential proxies. It may slow down to avoid simple thresholds. It may mimic the browser request shape closely enough to get past a basic check. It may use an API route that exists for the mobile app rather than the public login form.&lt;/p&gt;
&lt;p&gt;So the useful question is not just "how many login attempts did we see?" It is "which client, route, network, fingerprint, account, and response pattern suggests automation?"&lt;/p&gt;
&lt;p&gt;That is where &lt;a href="/products/bot-management/"&gt;bot management&lt;/a&gt; belongs in the account journey. It should not be an isolated "human or bot" label. It should become part of the request evidence used for login, recovery, checkout, and account-change decisions.&lt;/p&gt;
&lt;h2&gt;Checkout Abuse Is Often API Abuse&lt;/h2&gt;
&lt;p&gt;Checkout abuse is not always a stolen-card problem. It can be a request-path problem.&lt;/p&gt;
&lt;p&gt;Bots can test coupon codes, reserve inventory, create carts, check delivery combinations, retry payment flows, and exploit business logic at machine speed. Some of this happens through visible browser journeys. Much of it happens through APIs used by the front end or mobile app.&lt;/p&gt;
&lt;p&gt;The damage is not always dramatic in a single request. A few extra cart creations may look normal. A small number of coupon checks may be expected. A payment retry can be legitimate. The problem is the campaign shape across routes.&lt;/p&gt;
&lt;p&gt;If the same automation profile moves through login, cart, promo, shipping, and payment APIs with abnormal timing or sequencing, the response should not depend on one endpoint crossing a crude global limit.&lt;/p&gt;
&lt;p&gt;It should be route-aware.&lt;/p&gt;
&lt;p&gt;A checkout API can tolerate different behaviour from a catalogue API. A payment route deserves different thresholds from a product search route. A coupon route may need controls around account age, session state, rate, and client evidence. A cart route may be harmless in one context and abusive in another.&lt;/p&gt;
&lt;h2&gt;Account Journeys Need Sensitive-Action Controls&lt;/h2&gt;
&lt;p&gt;Account abuse becomes most damaging when a session moves into sensitive actions.&lt;/p&gt;
&lt;p&gt;Changing an email address, resetting a password, adding a new delivery address, viewing stored payment details, redeeming loyalty value, or placing an order are different from normal browsing. They deserve stronger context.&lt;/p&gt;
&lt;p&gt;The request may be technically valid. The token may pass validation. The password may be correct. The API schema may be satisfied. That does not mean the action is safe.&lt;/p&gt;
&lt;p&gt;A strong control model looks at the full path into that action. Did the session begin with credential stuffing signals? Is the client first seen? Did the network change? Is there proxy or fingerprint drift? Has the account recently failed login attempts? Is the request cadence consistent with a human journey? Is the action unusually soon after authentication?&lt;/p&gt;
&lt;p&gt;These are not abstract "zero trust" slogans. They are practical checks on the account request path.&lt;/p&gt;
&lt;h2&gt;Rate Limits Need Better Keys&lt;/h2&gt;
&lt;p&gt;API abuse prevention often starts with rate limiting, but IP-only limits struggle with distributed automation and shared networks. The hard part is deciding what to count.&lt;/p&gt;
&lt;p&gt;For API bot abuse, useful rate keys can include route, method, account, token, API key, response code, ASN, country, TLS or HTTP fingerprint, verified bot state, and combinations of headers. The right key depends on the journey.&lt;/p&gt;
&lt;p&gt;A login endpoint might count failed attempts by account and fingerprint. A token endpoint might count refresh patterns by client and session. A checkout route might count attempts by account, payment state, and client fingerprint. A partner API might count by API key and route.&lt;/p&gt;
&lt;p&gt;&lt;a href="/products/advanced-rate-limiting/"&gt;Advanced rate limiting&lt;/a&gt; is valuable because it can model the abusive actor more precisely than a single IP address. It also gives teams response options short of blanket blocking: log, challenge, throttle, or deny depending on the route and risk.&lt;/p&gt;
&lt;p&gt;That matters because real API traffic includes customers, mobile apps, partners, service clients, good bots, bad bots, and increasingly AI-driven agents.&lt;/p&gt;
&lt;h2&gt;Agents Will Make the Journey Problem Harder&lt;/h2&gt;
&lt;p&gt;The next wave of automated API use will not all look like simple scripts. As discussed in &lt;a href="/blog/agentic-ai-vs-your-api/"&gt;Agentic AI vs. Your API&lt;/a&gt;, reasoning agents can explore, adapt, and change their behaviour based on responses.&lt;/p&gt;
&lt;p&gt;That does not mean every AI agent is malicious. It does mean endpoint-by-endpoint rules will age quickly.&lt;/p&gt;
&lt;p&gt;A reasoning agent can try one path, observe the result, and adjust. It can move from documentation to browser-backed APIs to mobile-shaped requests. It can test which routes are protected, which errors reveal state, and which actions trigger stronger checks.&lt;/p&gt;
&lt;p&gt;Defence needs the same journey view. The campaign should be visible as it moves, even when the exact request pattern changes.&lt;/p&gt;
&lt;h2&gt;Keep Evidence Attached to the Campaign&lt;/h2&gt;
&lt;p&gt;API bot abuse is easier to manage when the evidence stays attached.&lt;/p&gt;
&lt;p&gt;The useful record is not just "blocked by rule 42". It is the route, account state, token or key context, fingerprint, proxy signal, rate key, response pattern, action taken, and protected business step. That evidence lets teams tune controls without guessing and investigate incidents without reconstructing the whole path from raw logs.&lt;/p&gt;
&lt;p&gt;For broader background, &lt;a href="/learning/api-protection/what-is-api-abuse-prevention/"&gt;API abuse prevention&lt;/a&gt; covers the categories. The operational point is narrower: login, checkout, and account APIs should not be defended as separate islands.&lt;/p&gt;
&lt;p&gt;Attackers use the journey.&lt;/p&gt;
&lt;p&gt;The defence should too.&lt;/p&gt;</content><category term="API Security"></category><category term="API Bot Protection"></category><category term="Bot Management"></category><category term="Account Protection"></category><category term="Rate Limiting"></category><category term="API Security"></category><category term="Threat Detection"></category></entry><entry><title>API Protection and Account Protection Are One Request-Path Problem</title><link href="https://www.peakhour.io/blog/api-protection-account-protection-request-path/" rel="alternate"></link><published>2026-06-19T00:00:00+10:00</published><updated>2026-06-19T00:00:00+10:00</updated><author><name>AC</name></author><id>tag:www.peakhour.io,2026-06-19:/blog/api-protection-account-protection-request-path/</id><summary type="html">&lt;p&gt;Account protection does not stop at the login form. The same request path carries API, bot, rate, token, and account-risk evidence, and that is where the decision needs to happen.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Account protection is often discussed as if it belongs to the login page. That made sense when most account abuse looked like someone submitting a username and password into a web form.&lt;/p&gt;
&lt;p&gt;That is not how modern account journeys work.&lt;/p&gt;
&lt;p&gt;A customer signs in through a browser, a mobile app, a partner integration, a password reset flow, a token refresh endpoint, a profile update request, a checkout API, and sometimes a service-to-service call that exists nowhere in the visible front end. The account is not protected by one screen. It is protected, or exposed, by the whole request path.&lt;/p&gt;
&lt;p&gt;That is why &lt;a href="/products/api-security/"&gt;API security&lt;/a&gt; and account protection should not be treated as separate operating problems. The API route, the identity context, the client evidence, the rate pattern, the token behaviour, the bot signal, and the account action all arrive together. Splitting those signals across disconnected tools makes the final decision weaker.&lt;/p&gt;
&lt;h2&gt;The Login Is Only the Start&lt;/h2&gt;
&lt;p&gt;Credential stuffing is the obvious example. Attackers test leaked credentials against login endpoints, but the useful outcome is rarely the login itself. The value comes after the session opens.&lt;/p&gt;
&lt;p&gt;They try to change the email address. They add a shipping address. They reset a password. They check stored cards. They redeem loyalty value. They place an order. They call account APIs that were built for the real customer journey and then abuse them in a different sequence.&lt;/p&gt;
&lt;p&gt;If the login defence is separate from the API defence, the organisation may see only fragments:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A spike in failed logins in one dashboard.&lt;/li&gt;
&lt;li&gt;A suspicious token refresh pattern somewhere else.&lt;/li&gt;
&lt;li&gt;A burst of profile-change requests in application logs.&lt;/li&gt;
&lt;li&gt;A fraud case after checkout.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each of those is useful. None is the full story.&lt;/p&gt;
&lt;p&gt;The better model is to keep the decision close to the request. A request to &lt;code&gt;/login&lt;/code&gt; is different from a request to &lt;code&gt;/account/email&lt;/code&gt;, &lt;code&gt;/checkout/payment&lt;/code&gt;, or &lt;code&gt;/api/token/refresh&lt;/code&gt;. The route matters. So does the method, the session state, the previous failures, the network, the client evidence, and the account action being attempted.&lt;/p&gt;
&lt;h2&gt;APIs Carry Account Risk&lt;/h2&gt;
&lt;p&gt;APIs are not just developer plumbing. They are where many account journeys now happen.&lt;/p&gt;
&lt;p&gt;Mobile apps use APIs for login, registration, password reset, saved addresses, payment methods, and checkout. Single-page applications call APIs behind browser journeys. Partner systems may call account or order APIs directly. Internal services may use API keys or service credentials that function like non-human accounts.&lt;/p&gt;
&lt;p&gt;That creates a practical issue: account protection must cover both human and non-human identity paths.&lt;/p&gt;
&lt;p&gt;OAuth, JWTs, API keys, refresh tokens, and service credentials all need lifecycle control, least-privilege access, rotation, validation, and monitoring. But those controls are still not enough if the protected API cannot see whether the request is behaving like abuse.&lt;/p&gt;
&lt;p&gt;A valid token can be stolen. A valid API key can be overused. A real session can be driven by automation. A known customer can suddenly perform a high-risk action from a first-seen client through proxy infrastructure.&lt;/p&gt;
&lt;p&gt;The request has to be judged in context.&lt;/p&gt;
&lt;h2&gt;Rate Limiting Has to Follow Business Logic&lt;/h2&gt;
&lt;p&gt;Basic rate limiting often starts with an IP address. That is an understandable first step, but it is not enough for account protection. Attackers rotate through proxy networks. Legitimate users may share a carrier or office IP. Some attacks are low and slow enough that no single IP looks exceptional.&lt;/p&gt;
&lt;p&gt;For account journeys, rate limiting needs to be tied to the thing being protected.&lt;/p&gt;
&lt;p&gt;Login attempts can be counted differently from password resets. Token refreshes can be counted differently from product searches. A failed authentication response can be treated differently from a normal read request. A route hit by a first-seen client can be treated differently from one used by a known browser session.&lt;/p&gt;
&lt;p&gt;That is the point of &lt;a href="/solutions/api-protection/"&gt;API protection&lt;/a&gt; as an operating layer, not just an API inventory exercise. The route, schema, authentication state, bot signal, and rate key should be available to the same decision. Otherwise teams end up writing compensating rules in several systems and hoping the gaps line up.&lt;/p&gt;
&lt;h2&gt;The Edge Decision Needs Options&lt;/h2&gt;
&lt;p&gt;Not every suspicious request should be blocked. Some should be logged. Some should be rate limited. Some should be challenged. Some should be allowed because the business impact of a false positive is worse than the risk presented by that specific request.&lt;/p&gt;
&lt;p&gt;Account protection is strongest when the action matches the journey.&lt;/p&gt;
&lt;p&gt;A login request with weak risk signals might be allowed but watched. A password reset request with stronger signals might require step-up. A checkout attempt from a newly compromised session might be blocked or reviewed. A partner API key exceeding expected usage might be throttled without affecting normal customers.&lt;/p&gt;
&lt;p&gt;Peakhour's position here is simple: API, bot, WAF, rate, and account controls work better when they share request evidence. That can run on Peakhour Edge, or it can sit beside the CDN and cloud edge already in place through &lt;a href="/solutions/bring-your-own-edge/"&gt;bring your own edge&lt;/a&gt;. The important part is not the label on the component. It is whether the request path has enough context to make the right decision.&lt;/p&gt;
&lt;h2&gt;Account Protection Is a Journey Control&lt;/h2&gt;
&lt;p&gt;A useful account protection programme should be able to answer operational questions.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Which routes are involved in account takeover attempts?&lt;/li&gt;
&lt;li&gt;Which sessions moved from suspicious login behaviour into account changes?&lt;/li&gt;
&lt;li&gt;Which tokens or API keys are behaving outside their expected pattern?&lt;/li&gt;
&lt;li&gt;Which controls created friction, and where?&lt;/li&gt;
&lt;li&gt;Which blocked requests actually protected account, checkout, or recovery actions?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Those questions cannot be answered from a login form alone. They require API visibility, account-event context, rate data, bot signals, and reviewable evidence.&lt;/p&gt;
&lt;p&gt;That is the thesis of this series: API protection and account protection are one request-path problem. The account is compromised through a sequence of requests. The defence needs to see that sequence early enough to act.&lt;/p&gt;
&lt;p&gt;For teams already working on &lt;a href="/solutions/use-case/prevent-account-takeovers/"&gt;account takeover prevention&lt;/a&gt;, the next step is not simply adding another login prompt. It is connecting the account journey to the API routes that now carry it.&lt;/p&gt;</content><category term="API Security"></category><category term="API Security"></category><category term="Account Protection"></category><category term="Bot Management"></category><category term="Rate Limiting"></category><category term="Threat Detection"></category><category term="Fraud Prevention"></category></entry><entry><title>Credential Stuffing Does Not Stop at the Login Form</title><link href="https://www.peakhour.io/blog/credential-stuffing-after-the-login/" rel="alternate"></link><published>2026-06-19T00:00:00+10:00</published><updated>2026-06-19T00:00:00+10:00</updated><author><name>AC</name></author><id>tag:www.peakhour.io,2026-06-19:/blog/credential-stuffing-after-the-login/</id><summary type="html">&lt;p&gt;Credential stuffing risk continues after a password works. Account protection needs to watch password reset, email change, stored payment, gift card, and checkout flows.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Credential stuffing is usually described as a login problem. An attacker takes breached username and password pairs, tests them against a site, and tries to find accounts where people reused passwords.&lt;/p&gt;
&lt;p&gt;That description is accurate, but incomplete. The login is only the first gate. The real damage often happens in the flows that follow a successful login: password reset, email change, saved cards, loyalty balances, gift cards, account recovery, address changes, and checkout.&lt;/p&gt;
&lt;p&gt;If account protection only watches the login form, it can miss the part of the attack that matters most to the business.&lt;/p&gt;
&lt;p&gt;A successful credential stuffing attempt does not always look dramatic. The attacker may have valid credentials. They may come through residential proxy infrastructure. They may spread attempts across many IP addresses. They may slow the attack down to stay below simple thresholds. If the site treats a valid username and password as the end of the risk decision, the attacker inherits whatever the account can do.&lt;/p&gt;
&lt;p&gt;That is why &lt;a href="/solutions/use-case/prevent-account-takeovers/"&gt;account takeover prevention&lt;/a&gt; needs to cover account actions, not just authentication.&lt;/p&gt;
&lt;h2&gt;The Attack Continues After the Password Works&lt;/h2&gt;
&lt;p&gt;Once an attacker is inside an account, they usually want persistence, value, or both.&lt;/p&gt;
&lt;p&gt;A password reset or password change can lock the real customer out. An email change can move alerts, receipts, and recovery messages away from the owner. A phone number change can weaken later verification. A new shipping address can redirect physical goods. Stored payment methods can turn account access into immediate fraud. Gift cards, store credits, loyalty points, and refunds can be easier to monetise than a card transaction.&lt;/p&gt;
&lt;p&gt;Checkout is often where the compromise becomes visible, but the risk builds earlier. A login from unfamiliar infrastructure followed by a profile change, then a saved-card purchase, is different from a returning customer browsing previous orders. A dormant account that suddenly redeems gift cards, changes email, and ships to a new address deserves more scrutiny than an ordinary login.&lt;/p&gt;
&lt;p&gt;These flows are also common in APIs. Mobile apps, single-page applications, partner integrations, and checkout backends expose account actions through endpoints that may not share the same controls as the web login page. Attackers do not care whether the valuable step is behind &lt;code&gt;/login&lt;/code&gt;, &lt;code&gt;/api/account/email&lt;/code&gt;, or &lt;code&gt;/checkout/payment&lt;/code&gt;. They follow the path that works.&lt;/p&gt;
&lt;h2&gt;Breached Credentials Are a Risk Signal&lt;/h2&gt;
&lt;p&gt;&lt;a href="/products/breached-credentials/"&gt;Breached credential&lt;/a&gt; checks are useful because they add context before the account is fully trusted. If a credential pair is known to have appeared in a breach, the site can treat the session differently from the start.&lt;/p&gt;
&lt;p&gt;That does not mean every breached credential attempt should be handled the same way. A user may be genuinely logging in with a reused password. An attacker may be testing a combo list. A customer may be returning after a long period away. The point is to make the risk visible and carry it through the session.&lt;/p&gt;
&lt;p&gt;Peakhour has written before about &lt;a href="/blog/breached-credentials-protection-application-security-platform/"&gt;managing breached credential usage&lt;/a&gt;. The practical lesson is that credential risk should feed the wider account protection decision. A breached credential signal should be considered alongside client evidence, network context, request rate, route sensitivity, behaviour, and the action being attempted.&lt;/p&gt;
&lt;p&gt;A low-risk page view and a stored-card checkout should not inherit the same confidence just because both follow a successful login.&lt;/p&gt;
&lt;h2&gt;MFA Helps, But It Does Not Close Every Path&lt;/h2&gt;
&lt;p&gt;Multi-factor authentication remains useful. It can stop many direct account takeover attempts and raise the cost of abuse. But &lt;a href="/blog/why-mfa-is-an-incomplete-defence/"&gt;MFA is not a complete defence&lt;/a&gt; when attackers use social engineering, session theft, weak recovery flows, trusted devices, or post-login actions that do not require step-up verification.&lt;/p&gt;
&lt;p&gt;The better pattern is adaptive control. Let the login succeed when the evidence is low risk. Step up when the action matters. Ask for stronger verification before changing the email address, adding a new payout method, redeeming a stored balance, or checking out with saved payment details from an unfamiliar context.&lt;/p&gt;
&lt;p&gt;This is not about adding friction everywhere. It is about reserving friction for the points where compromise turns into loss.&lt;/p&gt;
&lt;h2&gt;What to Monitor After Login&lt;/h2&gt;
&lt;p&gt;The useful signals are operational and specific:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Credential risk at login, including known breached username and password pairs.&lt;/li&gt;
&lt;li&gt;New client, browser, or network evidence on an existing account.&lt;/li&gt;
&lt;li&gt;Password reset, password change, email change, and phone change attempts.&lt;/li&gt;
&lt;li&gt;New shipping addresses, payment method changes, stored-card use, gift card redemption, and loyalty balance activity.&lt;/li&gt;
&lt;li&gt;Sudden changes in behaviour, such as rapid checkout after login or repeated account recovery attempts.&lt;/li&gt;
&lt;li&gt;API routes that perform sensitive account actions without the same scrutiny as browser flows.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The response should match the confidence and consequence. Some events only need logging. Some need tighter rate limits. Some need a browser challenge, MFA step-up, temporary hold, customer notification, or review.&lt;/p&gt;
&lt;p&gt;Credential stuffing defence is not finished when a password works or fails. The more useful question is: what does this session try to do next, and does the evidence justify trusting it?&lt;/p&gt;
&lt;p&gt;For account protection, that is the line that matters.&lt;/p&gt;</content><category term="API Security"></category><category term="API Security"></category><category term="Account Protection"></category><category term="Credential Stuffing"></category><category term="Bot Management"></category><category term="Breached Credentials"></category><category term="Fraud Prevention"></category></entry><entry><title>Fingerprints Are Evidence, Not Identity</title><link href="https://www.peakhour.io/blog/fingerprints-are-evidence-not-identity/" rel="alternate"></link><published>2026-06-19T00:00:00+10:00</published><updated>2026-06-19T00:00:00+10:00</updated><author><name>AC</name></author><id>tag:www.peakhour.io,2026-06-19:/blog/fingerprints-are-evidence-not-identity/</id><summary type="html">&lt;p&gt;Browser and network fingerprints are useful security evidence, but they should not be treated as proof of a person's identity.&lt;/p&gt;</summary><content type="html">&lt;p&gt;The word "fingerprint" can create the wrong expectation.&lt;/p&gt;
&lt;p&gt;In security, a browser or network fingerprint is not the same as a human fingerprint. It does not prove who a person is. It does not remove uncertainty. It should not be treated as a permanent identity for a customer.&lt;/p&gt;
&lt;p&gt;A fingerprint is evidence. Sometimes it is strong evidence. Sometimes it is weak, common, stale, or deliberately manipulated. Its value comes from how it is combined with route, behaviour, account state, network context, credential risk, and the action being requested.&lt;/p&gt;
&lt;p&gt;That distinction is more than wording. It affects how security teams design controls, explain decisions, and avoid overblocking legitimate users.&lt;/p&gt;
&lt;h2&gt;What Network Fingerprints Can Tell You&lt;/h2&gt;
&lt;p&gt;&lt;a href="/learning/fingerprinting/what-is-network-fingerprinting/"&gt;Network fingerprinting&lt;/a&gt; compares connection and protocol evidence. TCP behaviour, TLS handshakes, JA3 or JA4-style representations, HTTP/2 settings, header shape, MTU, proxy indicators, ASN, and path characteristics can all help classify the client or infrastructure behind a request.&lt;/p&gt;
&lt;p&gt;That can be useful during credential stuffing, scraping, scanning, API abuse, or Layer 7 attack pressure. Attackers may rotate IP addresses, but parts of the client stack or automation framework can remain consistent. Grouping requests by network evidence can make rate limiting, bot detection, and investigation more precise than IP-only rules.&lt;/p&gt;
&lt;p&gt;But the fingerprint is still not identity.&lt;/p&gt;
&lt;p&gt;Common browsers can share similar network shapes. Mobile networks and carrier-grade NAT can make unrelated users appear close together. VPNs and residential proxies can distort source context. Browser and library updates can change fingerprints overnight. Hashing can make signals portable while hiding useful detail. Attack tools can also try to imitate normal clients.&lt;/p&gt;
&lt;p&gt;The right conclusion from a suspicious network fingerprint is not "we know who this is". It is "this request deserves a different level of confidence".&lt;/p&gt;
&lt;h2&gt;What Browser Fingerprints Can Add&lt;/h2&gt;
&lt;p&gt;&lt;a href="/learning/fingerprinting/what-is-browser-fingerprinting/"&gt;Browser fingerprinting&lt;/a&gt; adds evidence from the application layer and, where appropriate, browser-side checks. Headers, client hints, JavaScript-visible properties, rendering behaviour, storage behaviour, timezone, language, permissions, and API availability can help decide whether a request looks like the browser it claims to be.&lt;/p&gt;
&lt;p&gt;This matters because many attacks try to borrow the appearance of ordinary browser traffic. Automation frameworks, emulators, headless browsers, anti-detect browsers, and scripted API clients can all present a user-agent string that looks plausible. Browser evidence helps compare the claim with the rest of the request.&lt;/p&gt;
&lt;p&gt;Again, the useful output is confidence, not identity. A browser fingerprint might support a challenge. It might support a lower rate limit. It might explain why a session changing an email address needs step-up verification. It might help &lt;a href="/products/bot-management/"&gt;bot management&lt;/a&gt; separate obvious automation from normal traffic.&lt;/p&gt;
&lt;p&gt;It should not become a claim that one technical pattern equals one person.&lt;/p&gt;
&lt;h2&gt;The Comparison Matters&lt;/h2&gt;
&lt;p&gt;Peakhour's page on &lt;a href="/learning/fingerprinting/browser-fingerprinting-vs-network-fingerprinting/"&gt;browser fingerprinting vs network fingerprinting&lt;/a&gt; makes the operational split clear. Network fingerprints usually come from passive connection and protocol evidence. Browser fingerprints often involve request and browser-side evidence. They answer related but different questions.&lt;/p&gt;
&lt;p&gt;A strong decision often needs both.&lt;/p&gt;
&lt;p&gt;A request claiming to be a normal browser should look broadly consistent across TLS, HTTP/2, headers, JavaScript-visible browser properties, proxy context, route behaviour, and account history. If the browser looks normal but the network path resembles a known automation cluster, that is useful. If the network path looks ordinary but the browser evidence is inconsistent or missing on a sensitive route, that is useful too.&lt;/p&gt;
&lt;p&gt;The mismatch is the signal. The response still depends on consequence.&lt;/p&gt;
&lt;p&gt;A suspicious request to a public asset route might only need logging. The same evidence on login, password reset, stored-card checkout, account email change, admin access, or an expensive API route may justify a challenge, tighter limit, temporary hold, or review.&lt;/p&gt;
&lt;h2&gt;How to Use Fingerprints Responsibly&lt;/h2&gt;
&lt;p&gt;Fingerprints work best when they are attached to an explainable decision. A security event should show the route, account or token context where relevant, source network evidence, browser evidence, policy action, response code, and review outcome. That gives operators a way to understand and correct decisions.&lt;/p&gt;
&lt;p&gt;Peakhour's guide to &lt;a href="/learning/fingerprinting/network-fingerprint-signals-and-security-decisions/"&gt;network fingerprint signals and security decisions&lt;/a&gt; frames the choices properly: allow, log, challenge, rate limit, block, or review. A fingerprint should help choose among those actions. It should not replace judgement.&lt;/p&gt;
&lt;p&gt;Responsible use also means accepting uncertainty. Fingerprints collide. They drift. They can be spoofed. Some privacy tools intentionally reduce or alter browser signals. Some legitimate users have unusual configurations. Some high-risk requests have only partial evidence.&lt;/p&gt;
&lt;p&gt;That uncertainty does not make fingerprints useless. It means they should be one layer in a wider control set.&lt;/p&gt;
&lt;p&gt;For account and API security, the practical question is not "can this fingerprint identify a person?" It is "does this evidence change the confidence we should place in this request?"&lt;/p&gt;
&lt;p&gt;If the answer is yes, use it carefully. Increase scrutiny on sensitive actions. Reduce friction where evidence is clean. Preserve enough context for review. Avoid pretending that a technical fingerprint is a human identity.&lt;/p&gt;
&lt;p&gt;That is the more accurate model, and it leads to better security decisions.&lt;/p&gt;
&lt;p&gt;For a protocol-level example, see &lt;a href="/blog/fingerprint-is-a-cohort-not-a-client/"&gt;A network fingerprint is a cohort, not a client&lt;/a&gt;. It compares the information retained by JA3, JA4 and Cisco Mercury and explains why a matching TLS value can still cover many applications and users.&lt;/p&gt;</content><category term="API Security"></category><category term="API Security"></category><category term="Fingerprinting"></category><category term="Bot Management"></category><category term="Account Protection"></category><category term="Network Fingerprinting"></category><category term="Browser Fingerprinting"></category></entry><entry><title>Account Security Without Tracking People</title><link href="https://www.peakhour.io/blog/privacy-respecting-account-security-risk-signals/" rel="alternate"></link><published>2026-06-19T00:00:00+10:00</published><updated>2026-06-19T00:00:00+10:00</updated><author><name>AC</name></author><id>tag:www.peakhour.io,2026-06-19:/blog/privacy-respecting-account-security-risk-signals/</id><summary type="html">&lt;p&gt;Safer logins do not require treating people as products. Account defence should use minimised, purpose-bound risk signals and proportionate decisions.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Account security needs evidence. A login request is not just a username and password; it has a route, client context, browser behaviour, network path, timing, session history, credential risk, and follow-on actions. Without some of that context, defenders are left with blunt controls: block too much, challenge everyone, or trust too easily.&lt;/p&gt;
&lt;p&gt;The privacy problem starts when security teams confuse evidence with identity.&lt;/p&gt;
&lt;p&gt;A risk signal should help answer a narrow operational question: should this login, password reset, email change, API call, or checkout step be allowed, challenged, rate limited, blocked, logged, or reviewed? It should not become a general-purpose profile of a person.&lt;/p&gt;
&lt;p&gt;That distinction matters. Good &lt;a href="/solutions/use-case/contextual-security/"&gt;contextual security&lt;/a&gt; is not surveillance dressed up as account protection. It is purpose-bound telemetry used to make proportionate security decisions.&lt;/p&gt;
&lt;h2&gt;Minimise the Signal Set&lt;/h2&gt;
&lt;p&gt;Security teams should start with the action they are protecting.&lt;/p&gt;
&lt;p&gt;A login attempt may need credential risk, source network context, browser consistency, known client status, failed-attempt history, and session age. A password reset may need different evidence. A checkout using stored payment details may need another set again. There is rarely a good reason to collect every possible signal for every route.&lt;/p&gt;
&lt;p&gt;This is especially important with browser and device evidence. &lt;a href="/learning/fingerprinting/what-is-browser-fingerprinting/"&gt;Browser fingerprinting&lt;/a&gt; can include headers, client hints, JavaScript-visible properties, rendering behaviour, storage behaviour, timezone, language, and other consistency checks. Those signals can be useful for detecting automation, anti-detect browsers, session abuse, and high-risk account changes. They can also be privacy-sensitive if collected broadly or retained without a clear purpose.&lt;/p&gt;
&lt;p&gt;The practical standard should be simple: collect what is needed for the account defence decision, attach it to that decision, and avoid turning uniqueness into the goal.&lt;/p&gt;
&lt;h2&gt;Use Evidence Over Identity&lt;/h2&gt;
&lt;p&gt;A security system does not need to know who a person "really" is to make a better login decision. It often only needs to know whether the request looks consistent with the account, route, browser, network path, and recent behaviour.&lt;/p&gt;
&lt;p&gt;That is where &lt;a href="/solutions/use-case/verified-browser-trust/"&gt;verified browser trust&lt;/a&gt; fits. The point is not to label a human being. The point is to decide whether a browser-like request has returned enough trustworthy evidence to proceed on a sensitive path. If the evidence is weak, the system can choose a proportionate response: log, challenge, rate limit, step up authentication, or send the event for review.&lt;/p&gt;
&lt;p&gt;Network evidence should be handled the same way. &lt;a href="/learning/fingerprinting/network-fingerprint-signals-and-security-decisions/"&gt;Network fingerprint signals&lt;/a&gt; can help distinguish ordinary browser traffic from automation, proxy paths, unusual client stacks, or inconsistent request shapes. But a network signal is not a person. It is one piece of evidence attached to a request.&lt;/p&gt;
&lt;p&gt;That framing reduces overreach. It also improves operations because decisions remain reviewable. If a customer is challenged, support and security teams should be able to see the route, risk signals, and policy reason without needing a vague black-box identity claim.&lt;/p&gt;
&lt;h2&gt;Be Careful With Behavioural Analytics&lt;/h2&gt;
&lt;p&gt;Behavioural analytics can help detect account compromise, especially when a session changes sharply from normal account usage. A customer who normally logs in from one region and browses slowly may deserve extra scrutiny if the same account suddenly logs in from unfamiliar infrastructure, changes email, redeems stored value, and checks out quickly.&lt;/p&gt;
&lt;p&gt;But behavioural systems have limits.&lt;/p&gt;
&lt;p&gt;Some users are sporadic. Some travel. Some use privacy tools. Some share devices. Some change browsers or phones. Some only visit when there is a problem. If there is not enough history, the system should admit that uncertainty rather than pretending the baseline is stronger than it is.&lt;/p&gt;
&lt;p&gt;That is where adaptive security is useful. Low-confidence evidence does not always justify a hard block. It might justify logging, a lower rate limit, a step-up challenge on a sensitive action, or a temporary hold on a risky change.&lt;/p&gt;
&lt;p&gt;The aim is not perfect recognition. It is better decision-making under uncertainty.&lt;/p&gt;
&lt;h2&gt;Make Retention and Purpose Part of the Design&lt;/h2&gt;
&lt;p&gt;Privacy-respecting account security is not only about which signals are collected. It is also about how long they are kept, where they are used, and who can inspect them.&lt;/p&gt;
&lt;p&gt;Useful practices include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tie telemetry to account defence purposes such as login risk, bot detection, account recovery, checkout abuse, and API misuse.&lt;/li&gt;
&lt;li&gt;Prefer route-specific evidence over broad user profiling.&lt;/li&gt;
&lt;li&gt;Keep raw signals only where they are needed for detection, audit, or investigation.&lt;/li&gt;
&lt;li&gt;Store decision evidence in a way operators can review.&lt;/li&gt;
&lt;li&gt;Avoid using security telemetry for unrelated marketing or behavioural targeting.&lt;/li&gt;
&lt;li&gt;Tune controls so low-risk users are not repeatedly challenged without cause.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Peakhour should not pretend that account security can happen with no fingerprints, no telemetry, and no judgement. Modern attacks abuse valid credentials, residential proxy paths, automation frameworks, API routes, and post-login workflows. Defenders need evidence.&lt;/p&gt;
&lt;p&gt;The privacy-respecting position is narrower and stronger: collect the right evidence for the security decision, minimise it, keep it purpose-bound, and treat fingerprints as confidence signals rather than personal identity.&lt;/p&gt;
&lt;p&gt;That is how account security can become safer without turning every login into tracking for its own sake.&lt;/p&gt;</content><category term="API Security"></category><category term="API Security"></category><category term="Account Protection"></category><category term="Contextual Security"></category><category term="Privacy"></category><category term="Fingerprinting"></category><category term="Risk-Based Authentication"></category></entry><entry><title>How Residential Proxies Changed API and Account Abuse</title><link href="https://www.peakhour.io/blog/residential-proxies-api-account-abuse/" rel="alternate"></link><published>2026-06-19T00:00:00+10:00</published><updated>2026-06-19T00:00:00+10:00</updated><author><name>AC</name></author><id>tag:www.peakhour.io,2026-06-19:/blog/residential-proxies-api-account-abuse/</id><summary type="html">&lt;p&gt;Residential proxies have changed account abuse from obvious bursts into distributed, low-noise workflows across login, account, and API routes. Treat proxy use as a risk signal, not a blunt block rule.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Residential proxies have changed the shape of API and account abuse. The old picture was easier to reason about: too many failed logins from one IP, a known hosting provider range, an obvious bot user agent, or a burst that crossed a threshold quickly enough to trip a rule.&lt;/p&gt;
&lt;p&gt;That still happens, but it is not the harder problem.&lt;/p&gt;
&lt;p&gt;The harder problem is the attempt that arrives through ordinary consumer networks, spreads itself across many addresses, and behaves just slowly enough to avoid looking like an incident. One login attempt here. A password reset probe there. A token refresh pattern that is unusual only when it is seen beside the route, the client, the ASN, the credential history, and the account event.&lt;/p&gt;
&lt;p&gt;That is why &lt;a href="/products/residential-proxy-detection/"&gt;residential proxy detection&lt;/a&gt; should be treated as part of the account and API decision path, not as a standalone allow/block list.&lt;/p&gt;
&lt;h2&gt;The Account Workflow Is Now a Distributed Target&lt;/h2&gt;
&lt;p&gt;Attackers do not need to break the whole application at once. They can work through the account surface in pieces:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Login attempts against known usernames.&lt;/li&gt;
&lt;li&gt;Password reset initiation and verification.&lt;/li&gt;
&lt;li&gt;New account registration.&lt;/li&gt;
&lt;li&gt;Token issue and refresh routes.&lt;/li&gt;
&lt;li&gt;Payment, address, profile, and email changes.&lt;/li&gt;
&lt;li&gt;Loyalty, wallet, checkout, or stored-value workflows.&lt;/li&gt;
&lt;li&gt;API calls that reveal whether an account or credential is valid.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each route may look acceptable in isolation. The risk appears when the pattern is joined together.&lt;/p&gt;
&lt;p&gt;A residential proxy network helps the attacker keep that pattern quiet. Requests rotate through many residential-looking exits. IP-based rate limits see different sources. A reputation feed may not have labelled a fresh or private proxy network yet. Geo checks can look plausible enough. The traffic does not necessarily arrive as a clean burst.&lt;/p&gt;
&lt;p&gt;This is where static thinking breaks down. If the only question is "is this IP bad?", the answer will often arrive too late or be too blunt to use safely.&lt;/p&gt;
&lt;h2&gt;Fresh and Private Proxy Networks Create a Timing Problem&lt;/h2&gt;
&lt;p&gt;Many teams think about proxy detection as a database problem: look up the IP, see whether it is a proxy, then block it. That works for some traffic, especially known data centre proxies and commodity infrastructure.&lt;/p&gt;
&lt;p&gt;Residential proxy abuse is less tidy. Fresh networks can appear before public datasets have a confident label. Private networks may not show up in broad feeds at all. Some exit points are shared with legitimate users. Some sit behind carrier-grade NAT or normal household connections. Blocking the address outright can create customer pain, while allowing it without context leaves the account flow exposed.&lt;/p&gt;
&lt;p&gt;This is the practical reason Peakhour talks about residential proxy use as a signal. The signal matters, but it has to sit beside &lt;a href="/products/ip-intelligence/"&gt;IP intelligence&lt;/a&gt;, connection characteristics, client history, request behaviour, account state, and route sensitivity.&lt;/p&gt;
&lt;p&gt;A residential proxy on a marketing page may only need logging. The same proxy signal on a login route with recent failures may justify a challenge. On a password reset or high-value account change, it may justify step-up authentication, throttling, or blocking depending on the rest of the evidence.&lt;/p&gt;
&lt;p&gt;The control should match the risk of the action.&lt;/p&gt;
&lt;h2&gt;Low-and-Slow Behaviour Is Still Automation&lt;/h2&gt;
&lt;p&gt;Low-and-slow abuse is uncomfortable because it avoids the easy operational story. There is no dramatic spike. There may be no single IP worth banning. The application may not be overloaded. Support may only see a few confused users, a few locked accounts, or a gradual rise in reset attempts.&lt;/p&gt;
&lt;p&gt;For API and account workflows, this is still automation. It just looks less like a flood and more like a background process.&lt;/p&gt;
&lt;p&gt;Useful signals include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Repeated failed authentication across a shared fingerprint or client pattern.&lt;/li&gt;
&lt;li&gt;Many accounts touched by similar request timing.&lt;/li&gt;
&lt;li&gt;Token or reset routes used out of sequence.&lt;/li&gt;
&lt;li&gt;Browser characteristics that do not match the claimed client.&lt;/li&gt;
&lt;li&gt;Residential proxy use on sensitive account routes.&lt;/li&gt;
&lt;li&gt;Fresh IP or ASN patterns appearing around account events.&lt;/li&gt;
&lt;li&gt;Similar request shapes distributed across unrelated accounts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;None of these signals has to prove abuse by itself. The point is to combine them early enough that the application does not have to make the decision alone.&lt;/p&gt;
&lt;p&gt;Peakhour's view is that proxy detection belongs in the same operating model as bot management, rate limiting, account risk scoring, and event evidence. The useful question is not "can we block every residential proxy?" It is "what should this route do when proxy use appears with this account, this client, this credential pattern, and this recent behaviour?"&lt;/p&gt;
&lt;h2&gt;API Routes Need the Same Treatment as Browser Flows&lt;/h2&gt;
&lt;p&gt;A common gap is protecting the visible login page while leaving API routes with weaker controls. Browser-side checks can help on web flows, but many account actions now happen through mobile apps, single-page applications, partner integrations, and backend APIs.&lt;/p&gt;
&lt;p&gt;Those routes still need context. They need request-level validation, route-aware thresholds, proxy and IP signals, token checks, and evidence that can be reviewed later. A login API, a reset API, and a profile-change API should not all receive the same action just because the source address has the same reputation.&lt;/p&gt;
&lt;p&gt;This is also why rate limiting has to move beyond source IP. A rule can key on a token, header, fingerprint, account identifier, route, response code, or a combination of signals. That makes it possible to slow failed login behaviour without punishing every legitimate user behind the same network.&lt;/p&gt;
&lt;p&gt;The background reading on &lt;a href="/blog/proxy-detection-challenges-existing-solutions/"&gt;proxy detection challenges&lt;/a&gt; and &lt;a href="/blog/residential-proxy-detection-quantifying-hidden-threat/"&gt;quantifying residential proxy risk&lt;/a&gt; covers the broader detection problem. For API and account teams, the immediate step is more operational: find the routes where a residential proxy signal should change the action.&lt;/p&gt;
&lt;h2&gt;The Right Outcome Is Controlled Friction&lt;/h2&gt;
&lt;p&gt;Residential proxy detection is not a magic verdict. It is a way to make the account decision more honest.&lt;/p&gt;
&lt;p&gt;Some traffic should pass. Some should be logged. Some should be rate limited. Some should be challenged. Some should be blocked. The difference should come from route sensitivity, request context, and observed behaviour, not from a single IP label.&lt;/p&gt;
&lt;p&gt;A practical policy might look like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Monitor proxy use across all account and API routes.&lt;/li&gt;
&lt;li&gt;Apply tighter thresholds on login, reset, token, and account-change routes.&lt;/li&gt;
&lt;li&gt;Combine proxy use with credential, client, rate, and behaviour signals.&lt;/li&gt;
&lt;li&gt;Preserve decision records so security and support can explain what happened.&lt;/li&gt;
&lt;li&gt;Move from monitor to enforce only after reviewing false positives and customer impact.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That model gives teams a way to respond to residential proxy abuse without turning every shared residential network into a casualty.&lt;/p&gt;
&lt;p&gt;For a grounding definition, see &lt;a href="/learning/threat-detection/what-is-residential-proxy-detection/"&gt;What is Residential Proxy Detection?&lt;/a&gt;. For the product control, see &lt;a href="/products/residential-proxy-detection/"&gt;Residential Proxy Detection&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The important shift is simple: residential proxies are not just a network category. In account and API protection, they are context for deciding how much trust a request deserves.&lt;/p&gt;</content><category term="API Security"></category><category term="API Security"></category><category term="Account Protection"></category><category term="Residential Proxies"></category><category term="Bot Management"></category><category term="Rate Limiting"></category><category term="Threat Detection"></category></entry><entry><title>Shadow APIs Are Account-Abuse Paths</title><link href="https://www.peakhour.io/blog/shadow-apis-account-abuse/" rel="alternate"></link><published>2026-06-19T00:00:00+10:00</published><updated>2026-06-19T00:00:00+10:00</updated><author><name>AC</name></author><id>tag:www.peakhour.io,2026-06-19:/blog/shadow-apis-account-abuse/</id><summary type="html">&lt;p&gt;Shadow APIs matter because attackers do not care whether a route is documented. Mobile, partner, browser-backed, and legacy APIs can all become account-abuse paths when they remain outside normal controls.&lt;/p&gt;</summary><content type="html">&lt;p&gt;A shadow API is not dangerous because it has a mysterious name. It is dangerous because it still accepts requests.&lt;/p&gt;
&lt;p&gt;If an endpoint can reset a password, refresh a token, check an account, change a delivery address, apply a discount, validate a stored payment method, or expose customer data, it is part of the account-abuse surface. Whether it appears in the current OpenAPI file is secondary.&lt;/p&gt;
&lt;p&gt;Attackers do not need your API catalogue to be tidy. They need one working route that your normal controls do not understand.&lt;/p&gt;
&lt;h2&gt;The Forgotten Paths Are Often Real Paths&lt;/h2&gt;
&lt;p&gt;Most organisations have more API surface than they think.&lt;/p&gt;
&lt;p&gt;Mobile apps leave behind old versions. Partner integrations get built for a campaign and then stay online. Browser-backed APIs are treated as internal because they are called by the front end, even though anyone can inspect and replay the requests. Legacy account endpoints remain active because turning them off might break an unknown client.&lt;/p&gt;
&lt;p&gt;None of this is unusual. It is how real systems evolve.&lt;/p&gt;
&lt;p&gt;The risk appears when those routes keep accepting production traffic without the same security treatment as the visible application. A current login page may have bot detection, adaptive prompts, and tuned rate limits. An older mobile endpoint may only check whether the credentials are valid. A partner route may trust an API key that has not been rotated. A browser API may return more account state than the front end displays.&lt;/p&gt;
&lt;p&gt;That gap is where account abuse gets practical.&lt;/p&gt;
&lt;h2&gt;Unknown Does Not Mean Unused&lt;/h2&gt;
&lt;p&gt;Security teams sometimes talk about discovery as if the main outcome is a cleaner inventory. Inventory matters, but the more useful question is: what can this route do?&lt;/p&gt;
&lt;p&gt;A shadow API that serves public catalogue data has one risk profile. A shadow API that changes account details has another. A forgotten token endpoint is different again. A mobile route that accepts username and password combinations is a credential stuffing target, even if the public login page has already been hardened.&lt;/p&gt;
&lt;p&gt;This is why &lt;a href="/products/api-security/"&gt;API security&lt;/a&gt; has to stay connected to account context. Route discovery is only the start. The protection model needs to know method, schema, authentication state, response pattern, user journey, and business sensitivity.&lt;/p&gt;
&lt;p&gt;A &lt;code&gt;POST&lt;/code&gt; request to an account recovery endpoint deserves different treatment from a &lt;code&gt;GET&lt;/code&gt; request to a static content API. A password reset route used by a first-seen client through rotating proxy infrastructure is not the same as the same route used by a known customer session.&lt;/p&gt;
&lt;p&gt;The route matters because the account outcome matters.&lt;/p&gt;
&lt;h2&gt;Browser-Backed APIs Are Still APIs&lt;/h2&gt;
&lt;p&gt;A common blind spot is the API behind the web application.&lt;/p&gt;
&lt;p&gt;The front end might make a neat request to &lt;code&gt;/api/account/profile&lt;/code&gt;, &lt;code&gt;/api/cart/apply-coupon&lt;/code&gt;, or &lt;code&gt;/api/session/refresh&lt;/code&gt;. Because the route was designed for the browser, teams may assume the browser is the control. It is not.&lt;/p&gt;
&lt;p&gt;Requests can be replayed outside the page. Headers can be copied. Tokens can be stolen. User agents can be faked. Automation can follow the same sequence as the application, only faster and at scale.&lt;/p&gt;
&lt;p&gt;The right response is not to treat every browser-backed API as hostile. The right response is to attach evidence. Is this a known browser session? Is the TLS and HTTP behaviour consistent? Is the request sequence normal for the journey? Is the session suddenly moving from login to sensitive account changes? Does the schema match what the route expects?&lt;/p&gt;
&lt;p&gt;Those questions sit between basic definitions of &lt;a href="/learning/application-security/what-is-api-security/"&gt;what API security is&lt;/a&gt; and the operational work of stopping abuse.&lt;/p&gt;
&lt;h2&gt;Mobile and Partner APIs Need Ownership&lt;/h2&gt;
&lt;p&gt;Mobile and partner APIs create a slightly different problem. They often have legitimate non-browser clients, so crude controls can break real use.&lt;/p&gt;
&lt;p&gt;A mobile app may have older versions in the field. A partner may send traffic from fixed infrastructure, or from changing cloud infrastructure. A service client may authenticate with an API key rather than an interactive user session. Some requests will look less browser-like because they are not meant to be browsers.&lt;/p&gt;
&lt;p&gt;That makes ownership important.&lt;/p&gt;
&lt;p&gt;Each route should have an owner, expected clients, authentication model, rate expectation, schema expectation, and deprecation plan. API keys should be treated as credentials, not configuration strings. OAuth and JWT use should include short-lived access, appropriate scopes, and validation at the endpoint. Legacy flows should not survive indefinitely just because nobody is sure what they support.&lt;/p&gt;
&lt;p&gt;For REST services, that discipline includes the basics covered in &lt;a href="/learning/api-protection/what-is-rest-api-security/"&gt;REST API security&lt;/a&gt;: method control, status-code handling, input validation, token handling, rate limiting, and useful logging. The account-abuse angle is narrower and more operational: which of these controls tells us whether this request can harm a customer account?&lt;/p&gt;
&lt;h2&gt;Discovery Has to Feed Enforcement&lt;/h2&gt;
&lt;p&gt;A report listing unknown endpoints is useful for a week. A discovery process that feeds policy is useful every day.&lt;/p&gt;
&lt;p&gt;When a new route appears, the security question should be concrete:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Who owns it?&lt;/li&gt;
&lt;li&gt;Is it authenticated?&lt;/li&gt;
&lt;li&gt;Does it match a known schema?&lt;/li&gt;
&lt;li&gt;Does it touch account state?&lt;/li&gt;
&lt;li&gt;Can it reset trust, change value, or expose customer data?&lt;/li&gt;
&lt;li&gt;What rate and behaviour patterns are normal?&lt;/li&gt;
&lt;li&gt;Which action should apply when it is abused?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That is where &lt;a href="/solutions/use-case/api-security/"&gt;API protection use cases&lt;/a&gt; become more than documentation. The goal is not to produce a perfect catalogue for its own sake. The goal is to reduce the number of unknown request paths that can be used for account abuse.&lt;/p&gt;
&lt;p&gt;Shadow APIs are not a separate class of attack. They are normal APIs without enough operational visibility.&lt;/p&gt;
&lt;p&gt;And when they sit on account journeys, they become a direct path from unknown surface to customer harm.&lt;/p&gt;</content><category term="API Security"></category><category term="API Security"></category><category term="Shadow APIs"></category><category term="Account Protection"></category><category term="Bot Management"></category><category term="Threat Detection"></category><category term="DevSecOps"></category></entry><entry><title>Price Transparency Is Now a Data Access Problem</title><link href="https://www.peakhour.io/blog/price-transparency-apis-grey-zone-automation/" rel="alternate"></link><published>2026-05-18T00:00:00+10:00</published><updated>2026-05-18T00:00:00+10:00</updated><author><name>AC</name></author><id>tag:www.peakhour.io,2026-05-18:/blog/price-transparency-apis-grey-zone-automation/</id><summary type="html">&lt;p&gt;Price comparison increasingly depends on current web and API data. Retailers need bot and API controls that can distinguish intended automated access from uncontrolled extraction.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Australia's supermarket pricing debate can look like a consumer pricing story.&lt;/p&gt;
&lt;p&gt;For digital teams, it is also a bot and API protection story.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://www.accc.gov.au/media-release/accc-recommends-supermarket-reforms-to-provide-better-outcomes-for-consumers-and-suppliers"&gt;ACCC's final supermarket inquiry&lt;/a&gt; recommended that ALDI, Coles, and Woolworths publish prices on their websites. It also recommended that Coles and Woolworths make dynamic price APIs available for third-party comparison tools.&lt;/p&gt;
&lt;p&gt;Then, on 18 May 2026, &lt;a href="https://www.theguardian.com/business/2026/may/18/toothbrushes-ice-cream-and-frozen-pizza-data-reveals-how-coles-and-woolworths-switch-promotions-in-sync"&gt;Guardian Australia reported&lt;/a&gt; on CW Scanner data about Coles and Woolworths promotion patterns. For digital teams, the operational detail is this: the report said CW Scanner's operator stated the service was not scraping, and instead used the supermarkets' website application programming interfaces.&lt;/p&gt;
&lt;p&gt;That does not settle questions about permission, terms of use, supermarket approval, or the status of any specific API. It does make the practical problem sharper.&lt;/p&gt;
&lt;p&gt;Price transparency increasingly depends on automated access to current data.&lt;/p&gt;
&lt;p&gt;Every automated request still needs a decision.&lt;/p&gt;
&lt;h2&gt;APIs do not remove the bot problem&lt;/h2&gt;
&lt;p&gt;It is tempting to treat an API as the clean alternative to scraping. Sometimes it is cleaner. A documented API can make access more predictable, auditable, and easier to govern than repeated extraction from product pages.&lt;/p&gt;
&lt;p&gt;But an API is still an automation surface.&lt;/p&gt;
&lt;p&gt;The same retailer or marketplace may need to support:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;public product pages;&lt;/li&gt;
&lt;li&gt;price, promotion, search, listing, catalogue, and inventory routes;&lt;/li&gt;
&lt;li&gt;browser-backed application calls;&lt;/li&gt;
&lt;li&gt;documented APIs and partner feeds;&lt;/li&gt;
&lt;li&gt;comparison tools and public-interest services;&lt;/li&gt;
&lt;li&gt;search engines, monitoring systems, and accessibility tooling;&lt;/li&gt;
&lt;li&gt;unknown collectors rebuilding price, inventory, availability, or ticketing datasets outside the intended access model.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some of that traffic is useful. Some is commercially necessary. Some is abusive. Much of it will not identify itself honestly.&lt;/p&gt;
&lt;p&gt;So the question is not "should bots be blocked?"&lt;/p&gt;
&lt;p&gt;The question is: can you tell intended automated access from uncontrolled extraction?&lt;/p&gt;
&lt;h2&gt;The decision needs evidence&lt;/h2&gt;
&lt;p&gt;A blanket "block all automation" position can break comparison services, partner integrations, search visibility, monitoring, accessibility tooling, and APIs that were built to be automated.&lt;/p&gt;
&lt;p&gt;A blanket "allow everything" position can expose pricing, product, inventory, account, checkout, ticketing, and API paths to extraction and abuse.&lt;/p&gt;
&lt;p&gt;The practical middle ground is governed automation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;publish the access you want to support;&lt;/li&gt;
&lt;li&gt;recognise the clients and behaviours you expect;&lt;/li&gt;
&lt;li&gt;validate API route, schema, method, authentication, and client context;&lt;/li&gt;
&lt;li&gt;detect traffic that has drifted from the intended use;&lt;/li&gt;
&lt;li&gt;keep decision logs so security, legal, product, and commercial teams can review what happened;&lt;/li&gt;
&lt;li&gt;respond proportionately with allow, log, rate-limit, challenge, block, or review decisions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That is where bot protection becomes more than a yes-or-no control.&lt;/p&gt;
&lt;p&gt;It supplies the evidence behind each access decision.&lt;/p&gt;
&lt;h2&gt;Where Peakhour fits&lt;/h2&gt;
&lt;p&gt;&lt;a href="/solutions/use-case/prevent-site-scraping/"&gt;Scraping protection&lt;/a&gt; should identify repeated extraction across product, price, search, listing, catalogue, article, inventory, and availability routes. The goal is not to stop every non-human request. It is to separate expected access from collectors rebuilding data outside the site's control.&lt;/p&gt;
&lt;p&gt;&lt;a href="/solutions/use-case/api-bot-protection/"&gt;API bot protection&lt;/a&gt; applies the same discipline to automated API clients. APIs exist to be automated. The risk comes from unknown clients, unexpected route combinations, credential abuse, endpoint enumeration, excessive request volume, and business-logic abuse that generic perimeter controls cannot explain.&lt;/p&gt;
&lt;p&gt;&lt;a href="/products/bot-management/"&gt;Bot management&lt;/a&gt; turns request evidence into a decision: allow trusted traffic, log expected automated access, rate-limit noisy collectors, challenge uncertain sessions, block confirmed abuse, or send edge cases to review.&lt;/p&gt;
&lt;p&gt;&lt;a href="/solutions/use-case/verified-browser-trust/"&gt;Verified browser trust&lt;/a&gt; adds a useful signal when browser-backed journeys are being automated or replayed. Headers and cookies can be copied, proxy networks can rotate, and automation can mimic ordinary navigation. Peakhour can challenge the browser path, verify that the expected evidence came back, and attach that witness to the wider decision record.&lt;/p&gt;
&lt;p&gt;That browser signal does not, by itself, prove the user, device, or account is trustworthy. It helps the risk engine decide what to do alongside route, proxy, device, behaviour, credential, and API context.&lt;/p&gt;
&lt;h2&gt;Why this matters beyond supermarkets&lt;/h2&gt;
&lt;p&gt;The ACCC's 2024 proceedings against Coles and Woolworths were about alleged false or misleading price statements, not supermarket price regulation, collusion, or anti-competitive conduct. The &lt;a href="https://www.accc.gov.au/media-release/court-finds-that-coles-misled-customers-over-down-down-claims"&gt;ACCC announced on 14 May 2026&lt;/a&gt; that the Federal Court found Coles made false or misleading representations in 13 of 14 agreed sample "Down Down" tickets, with penalties and other orders still to be determined. For Woolworths, the separate "Prices Dropped" proceeding was awaiting judgment at publication.&lt;/p&gt;
&lt;p&gt;Those legal details matter, but they are not the Peakhour point.&lt;/p&gt;
&lt;p&gt;The Peakhour point is operational: when transparency, comparison, availability, or fairness depends on current digital data, organisations need a control plane that can support the access they intend and limit the extraction they do not.&lt;/p&gt;
&lt;p&gt;That pattern shows up in retail, marketplaces, ticketing, travel, financial services, media, and any platform where public pages, browser-backed calls, and APIs expose commercially valuable data. It also shows up in adjacent problems like account abuse, checkout abuse, ticket scalping, product scraping, distorted analytics, and inventory harvesting.&lt;/p&gt;
&lt;p&gt;The organisations that handle this well will not treat every automated request as the same.&lt;/p&gt;
&lt;p&gt;They will be the ones that know what access they intend to allow, what behaviour they intend to stop, and why.&lt;/p&gt;</content><category term="API Security"></category><category term="API Security"></category><category term="Bot Management"></category><category term="Scraping Protection"></category><category term="Price Transparency"></category><category term="Automation"></category><category term="E-commerce"></category></entry></feed>