Transport encryption
TLS 1.3 with HSTS and a strict Content Security Policy. Plain-HTTP requests are 308-redirected to HTTPS at the load balancer.
Form protection
Every form submission carries a same-site CSRF token. The contact form additionally has a hidden honeypot field that catches naive bots before our app code runs.
Storage
Card numbers, expiration dates, and security codes are never persisted. Access logs hold IP and user-agent for 14 days for diagnostics, then are purged on a rolling cron.
Access controls
Two-factor authentication is mandatory for any team account that can reach production. Production access is least-privilege — there is no shared admin role — and every access event is audit-logged.
Dependency hygiene
Automated alerts for known CVEs in our dependencies. Patches that affect security paths are tested in staging and pushed within 48 hours.
Incident response
If a security event occurs, we follow a written runbook: contain, assess, notify affected users, publish a public post-mortem within 30 days, and adjust controls so the same class of issue doesn't recur.