Security & compliance
All changes audited · step-up auth required for editsPlatform hardening in one place: traffic protection, HTTP security posture, supply-chain pipeline, release quality gates, and the versioned legal documents every tenant must accept.
Rate limiting & DoS protection · adaptive level: NORMAL (1.0×)
Login brute-force protection
Exponential per-IP backoff 1s → 30s on failed logins. 3 IPs currently locked out.
Cloudflare origin protection
Real client IP from CF-Connecting-IP. Direct-to-origin requests without the CF header → 403.
● Enforced in production Turnstile bot protection
All public POST endpoints (auth, signup, contact, feature requests) + honeypot. Fails open after 5 s CF timeout.
● 14 endpoints covered Security headers & CORS
CORS allowlist · per environment
Wildcard origins rejected in production (validated at boot).
SRI asset registry (CDN integrity)
3 registered assets · sha384 · public manifest served to apps.
fonts.css✓ verified 2026-07-01
turnstile-widget.js✓ verified 2026-07-01
maps-embed.js✓ verified 2026-06-28
security.txt (RFC 9116)
Served on all public domains · PGP key + disclosure policy (en/sv/fr/es) + hall of fame. Weekly CI check on the Expires field.
Expires2026-12-31 · ✓ 182 days left
Supply-chain security pipeline (four layers)
Responsible disclosure
Public SECURITY.md with scope, SLA and contact (security@petanque.life). Accepted-risks register: 2 entries, both reviewed Q2.
Release quality gates
Legal documents · versioned per (type, language)
● Clickwrap · live ● DocuSign (JWT grant) · live ● BankID v6 (SE default) · live
Audit-data compliance
Retention policy
Audit log retention: indefinite (legal basis GDPR art. 6(1)(f)). No TTL indexes anywhere. Non-compliant tenant policies are flagged automatically.
Per-field PII classification
Every audit field tagged: identity / network / behavioural / contextual. Erasure anonymises PII in place (actor → null, IP → 0.0.0.0) — the record itself is never deleted. Machine-readable schema exposed to the DPO tools.
States
⏳ Loading security posture…
✓ All gates green — no findings need attention.
⚠ Could not reach the pipeline API — showing last known state (14:02 UTC).