Security guide
Website Security Incident Response Plan
Turn a confusing web-security event into clear containment, evidence, communications, recovery, and improvements without guessing or creating a second outage.
On this page
An incident response plan is a rehearsed decision system, not a document written after an attack. It should help a technical team contain an event, help customer teams communicate verified facts, and give leadership and legal contacts enough context to make timely decisions. This guide follows the shape of established frameworks — NIST SP 800-61 Rev. 3's lifecycle and the SANS PICERL model (preparation, identification, containment, eradication, recovery, lessons learned) — translated into the decisions a web team actually faces when the "attacker" might just as easily be a bad deploy as a real adversary.
At the scale a managed edge orchestration layer operates — many origins, several security and CDN providers, hundreds of policy changes a year — the discipline behind a security incident response plan matters more than any single control. Consistent website incident response across every provider in the stack is what keeps one team's local judgment call from becoming everyone else's outage, which is why this plan treats edge provider escalation and cross-provider evidence as first-class steps, not an afterthought.
Overview
Outcome
Leave with a reusable incident plan that classifies severity, preserves safe evidence, contains a WAF-related checkout disruption narrowly, and proves both security control and customer recovery.
Overview
Prerequisites
- Named incident commander, technical lead, communications lead, legal/privacy contact, provider liaison, and backups.
- Access-controlled emergency contacts, provider support entitlements, and time-bounded break-glass access.
- Correlated edge, WAF, origin, application, authentication, and business-journey telemetry.
- A tested rollback procedure and approved customer and internal status channels.
Scenario: Acme Shop's new WAF rule blocks checkout
At 09:02 UTC, Acme Shop's checkout conversion alert rises after a routine WAF policy deployment. Security events show a new block decision on POST /checkout/confirm; application health and payment-provider telemetry remain healthy. This is a security incident because the change prevents a critical customer journey, but it is not evidence of an attack or a data disclosure. The team must restore legitimate checkout without broadly disabling protection or leaking customer data into the incident channel.
- Customer signal
A checkout conversion alert or report starts the record.
- Independent evidence
WAF, synthetic journey, and application telemetry establish scope.
- Incident commander
Sets severity, owners, facts, and update cadence.
- Scoped rollback
Reverts only the implicated policy or route scope.
- Recovery validation
Proves checkout, remaining controls, and monitoring are stable.
Independent journey and security evidence drives a narrow mitigation, verified communications, and a controlled recovery rather than a broad WAF bypass.
Independent validation and a route-specific rollback restore checkout without turning a WAF tuning event into a broad security bypass.
1. Use a severity matrix that reflects impact and confidence
Classify severity from impact, scope, and confidence rather than raw request volume. Reassess when evidence changes. A small confirmed issue on checkout or account recovery can outrank a large noisy scan against a public page.
| Severity | Typical condition | Initial response target | Decision authority | Update cadence |
|---|---|---|---|---|
| SEV-1 | Confirmed or strongly suspected sensitive-data exposure, active account takeover, or widespread critical-journey loss | Page immediately; begin containment | Incident commander with executive and legal/privacy engagement | Every 30 minutes or sooner on material change |
| SEV-2 | Material impact to checkout, login, API, or a credible security control bypass with bounded scope | Assemble response promptly | Incident commander and technical lead | Every 60 minutes |
| SEV-3 | Limited customer impact, contained abuse, or WAF false positive with a safe workaround | Assign owner and investigate | Technical lead | At agreed milestones |
| SEV-4 | Probe, alert, or policy anomaly without confirmed harmful impact | Record and triage | On-call owner | Close with evidence or escalate |
Acme initially classifies the checkout WAF block as SEV-2: a critical journey is materially affected, the scope is known, and there is no indication that a security boundary is bypassed. If evidence shows an active attack or data exposure, the incident commander immediately reassesses severity and engages the appropriate contacts.
2. Build a reusable security incident response plan
Copy this plan into the incident record and fill it with verified facts. Keep credentials, raw request bodies, payment information, session tokens, and full personal URLs out of chat, ticket, and status updates. A security incident response plan only earns its name if the same template is used every time: reuse removes the debate over what to log and what to skip while the clock is running.
incident:
id: INC-YYYY-NNN
commander: named-primary-and-backup
severity: SEV-2
declared_at_utc: 2026-07-14T09:05:00Z
customer_journeys: [checkout]
confirmed_facts: []
hypotheses: []
containment_change: null
rollback_owner: named-owner
evidence:
- sanitized-request-ids
- WAF-policy-version
- deployment-version
- checkout-success-rate-by-region
next_update_utc: 2026-07-14T10:05:00Z
exit_criteria:
- legitimate-checkout-success-rate-restored
- security-control-behavior-verified
- monitoring-stable-for-agreed-window
Use independent signals before containment: synthetic checkout, real-user conversion, WAF action counts, origin/application responses, and recent configuration changes. Preserve the relevant timestamp range, request or trace IDs, policy and deployment versions, affected routes and regions, and the business signal. Evidence should be minimal, sanitized, access-controlled, and retained under the normal policy.
Treat evidence integrity as part of containment. Export logs and configuration snapshots to storage the incident team does not casually overwrite, record who pulled each artifact and when, and keep a hash or checksum of exports that might later matter to a regulator, insurer, or law enforcement contact. If evidence could be relevant to a legal hold, freeze its normal retention and deletion schedule until legal/privacy releases it — a plan that deletes its own evidence on the usual 30-day cycle has quietly destroyed the record it was supposed to protect.
3. Run the WAF checkout timeline
The timeline is a decision aid, not a promise that every event unfolds identically. The incident commander owns the log and changes the cadence when facts require it.
| Time | Action | Owner | Evidence or decision |
|---|---|---|---|
| 09:02 | Checkout alert fires; open incident record | On-call | Conversion drop and alert link; no customer data pasted into the record |
| 09:05 | Confirm with synthetic checkout, WAF events, and application telemetry | Technical lead | New rule version blocks the route; payment and origin health are normal |
| 09:10 | Declare SEV-2 and assign communications and provider liaison | Incident commander | Scope: POST /checkout/confirm, affected regions, next update time |
| 09:15 | Preserve policy version and sanitized request IDs; prepare narrow rollback | Security owner | Roll back only the new rule or its route scope, not all WAF protections |
| 09:20 | Apply scoped rollback or precise exception through reviewed change path | Security owner | Change ID, owner, and explicit rollback-to-previous state |
| 09:25 | Validate browser and API checkout, expected denial behavior, and origin reachability | Technical lead | Success rate, status classes, latency, and no direct-origin bypass |
| 09:35 | Send verified internal and customer update if customer impact is confirmed | Communications lead | Known impact, mitigation, next update time; no causal speculation |
| 10:05 | Close only after stability window, control retest, and follow-up owners exist | Incident commander | Recovery evidence, decision log, and review date |
09:35 UTC | SEV-2 | Checkout confirmation was affected from 09:02-09:20 UTC.
Mitigation: reverted the newly deployed route-specific WAF policy.
Current state: checkout success rate and latency are within baseline; investigation continues.
Next update: 10:05 UTC. No customer action is required at this time.4. Contain narrowly, communicate facts, and prove recovery
Containment should address the observed behavior with the smallest effective change: a route-specific WAF rollback, a scoped rate limit, credential revocation, or an origin firewall adjustment. Record the exact configuration version, approver, rollback step, and expiry or review date. Do not respond to a checkout outage by globally disabling managed protections or opening direct-origin access unless the incident commander explicitly accepts, records, and time-boxes that risk.
Internal updates state the owner, severity, confirmed impact, actions, current risk, and next decision time. Customer-facing updates state only verified impact, affected service, any required action, and the next update time. Provider escalations include account or service ID, UTC window, hostname and route, sanitized request IDs, region, observed response, policy version, changes already made, and business impact. Do not send credentials or sensitive payloads through unapproved support channels.
| Validation | Success | Failure signal | Recovery action |
|---|---|---|---|
| Legitimate checkout | Browser and approved API tests complete once within baseline | Continued WAF block, elevated errors, or duplicate order effect | Restore the prior narrow policy state and stop further changes. |
| Security control | Known invalid test is still denied by the intended remaining control | Broad bypass or unexpected direct-origin access | Remove the broad change, restore layered controls, and retest. |
| Data handling | Evidence contains only approved sanitized fields | Tokens, personal data, or raw sensitive bodies appear in the record | Restrict access, redact under incident policy, and assess notification obligations. |
| Stability | Metrics remain healthy for the agreed window across regions | Flapping status, rising support contacts, or queue backlog | Reopen or continue the incident; do not declare recovery early. |
5. Run edge provider escalation with complete evidence
Most edge, WAF, and CDN providers run their own tiered severity system — commonly labeled P1-P4 or SEV1-SEV4 — with the top tier reserved for confirmed outages or active attacks and backed by an emergency phone line or a dedicated incident email address rather than the normal support queue. Knowing that tier structure before an incident, not during one, is what makes edge provider escalation fast instead of a scramble to find the right contact.
A support engineer who has never seen your traffic needs the same evidence your own team just assembled, packaged so they can act on it without a back-and-forth:
- Account or zone identifier, and the exact hostname, route, or service affected.
- The UTC time window, stated as a range, not "since this morning."
- The policy, rule, or configuration version in effect, and what changed immediately before symptoms started.
- Steps to reproduce with actual result versus expected result, plus a small number of sanitized request or trace IDs (never full request bodies, tokens, or payment data).
- Supporting diagnostic output (HAR files,
curlordigtraces, traceroutes) and the priority level you are requesting. - What you have already changed, so the provider does not propose a rollback you already tried.
Escalating with this evidence attached, rather than describing the symptom prose-first, moves a case out of the generic queue and cuts clarifying replies before an engineer starts working it.
Escalation evidence should read the same way for every provider
A team running one CDN and one WAF can keep this evidence in a shared doc. A team running several edge and security providers behind one origin cannot: each console shows only its own slice, and the same event can look like unrelated stories from separate dashboards. This is the gap Optimi's MYO closes — one correlated timeline across every provider in the stack, so the account ID, UTC window, policy version, and business-impact evidence an escalation needs comes from a single source instead of being reassembled by hand under pressure.
If two providers in the stack (a DNS/anycast layer and a WAF, say) each show a partial view of the same event, escalate to both in parallel rather than waiting for one to resolve first — sequencing escalations by guesswork is a common reason incidents run longer than the fault required.
6. Meet legal, regulatory, and customer notification obligations
Notification obligations often run on a clock that starts before your investigation is finished. Under GDPR, for example, a personal-data breach likely to risk individuals' rights and freedoms must generally be reported to the relevant supervisory authority within 72 hours of the organization becoming aware of it — "becoming aware" does not wait for full root cause. Many other regimes set their own fixed or "undue delay" windows. Confirm early, with legal/privacy in the loop from SEV-1 or SEV-2 declaration, whether the facts gathered so far plausibly trigger a notification duty, rather than waiting for the postmortem to ask.
Keep internal legal assessment and customer-facing statement separate: legal and the incident commander decide what is confirmed and what obligations apply; communications drafts only what is verified and necessary for the customer to act on. A premature "no customer data was affected" claim that is later corrected is more damaging than a slower, accurate update — and can itself become a compliance problem if a notification duty existed all along.
Troubleshooting
| Symptom | Likely cause | Safe check | Recovery |
|---|---|---|---|
| WAF events show blocks but checkout metrics are normal | Sampled events, route mismatch, or an unrelated client class | Correlate sanitized IDs with journey telemetry and route templates | Keep policy unchanged; reclassify if no customer impact is verified. |
| Checkout recovers after a broad WAF disable | The mitigation removed more protection than needed | Compare policy versions and run approved negative-control tests | Restore protections, then apply only the smallest verified route fix. |
| A rollback does not restore checkout | A second deploy, origin issue, or payment dependency also changed | Compare deployment, origin, and provider telemetry by timestamp | Restore the correct reviewed configuration and isolate the additional dependency. |
| Team cannot determine scope | Edge and application records lack a shared correlation ID | Test one approved journey end to end and inspect telemetry fields | Keep the incident open, add the correlation path, and rerun validation. |
| Customer update contains an unverified cause | Hypothesis was presented as fact | Review decision log and evidence ownership | Correct the update promptly, state what is confirmed, and set a new update time. |
| Two providers' dashboards tell different stories about the same window | Each console shows only its own slice of a multi-provider path | Correlate both providers' evidence against a shared UTC timeline and origin logs | Escalate to both providers in parallel with the merged timeline; don't wait for one ticket to close first. |
Learn and rehearse
After recovery, hold a blameless review while the timeline is fresh — SANS guidance suggests within roughly two weeks, before memory and chat threads fade. Record what happened, why detection and controls behaved as they did, which decisions were difficult, and the owner and due date for every improvement. Feed each finding back into preparation, whether that's an updated severity matrix, a new escalation contact, or a rehearsal scenario nobody had tried; lessons that do not change the plan were not really learned.
Rehearse both a technical and cross-functional scenario at least once: a WAF checkout block, credential exposure, origin bypass signal, provider outage, or malicious webhook burst. Rotate who plays incident commander across rehearsals — a plan that only works with one specific person in the room is a single point of failure. A plan that cannot be safely exercised is still an assumption.
Related guides
Authoritative references
- NIST SP 800-61 Rev. 3: Incident Response Recommendations and Considerations
- CISA: Incident Response Plan Basics
- OWASP Logging Cheat Sheet
- Cloudflare Logpush documentation
- Cloudflare: Contacting Cloudflare Support
Rehearse your security incident response plan before the next one
Optimi orchestrates Performance, Security, and Visibility across every edge and security provider in your stack, with MYO giving your team the single correlated timeline that makes containment, evidence, and edge provider escalation fast when it counts.
Review your incident readiness