01 / EDGE
Strict static CSP
script-src and style-src are 'self' — every script and stylesheet ships as an external file, so nothing inline runs. No 'unsafe-inline', no 'unsafe-eval', and no nonce to leak or desync. One fixed policy on every response.
Worker:·edge layer sets one static policy
02 / TRANSPORT
HSTS + modern TLS
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload — a one-year strict-transport lock, preload-eligible. TLS 1.3 only — the zone refuses TLS 1.2 and below — on Cloudflare-managed modern cipher suites.
Grade target:·A+ on SSL Labs and Observatory
03 / FORMS
Turnstile + KV rate-limit
Contact and lead-magnet forms verify the Turnstile token server-side before any downstream action. Per-IP rate limit enforced via a Workers KV counter with a sliding window.
Tokens:·never trusted client-side
04 / AUDIT
PII-redacted audit log
Form submissions are written to a dedicated edge audit log with PII hashed at write time. We retain 30 days for incident triage; IPs are stored as /24 ranges only, never full addresses. No free-text message bodies are persisted in plaintext.
Retention:·30 days, then purged
05 / SECRETS
Secrets out of source
API keys (Resend, Turnstile secret, etc.) live in Cloudflare environment bindings. Wrangler config IDs (D1, R2, KV) are kept in a gitignored wrangler.local.jsonc so the committed config exposes only bindings, never identifiers.
Approach:·least-privilege per environment
06 / TELEMETRY
Cookie-free analytics
We run Cloudflare Web Analytics — no cookies, no fingerprinting, no banner required. No third-party trackers and no advertising scripts touch the page.
Compliance:·GDPR / PIPEDA friendly by default