Beveiliging, in gewone taal
Geen buzzwords. Hier wat we doen — en wat we niet beweren — om je sites, klanten en omzet veilig te houden.
Versleuteling onderweg
Elke verbinding gebruikt TLS 1.3. HSTS preloaded. We weigeren TLS 1.0 / 1.1 en zwakke cipher suites. Geen uitzonderingen voor legacy clients.
Versleuteling in rust
Database-volumes en S3-buckets zijn AES-256-versleuteld. Back-ups worden versleuteld voordat ze het productienetwerk verlaten.
2-Factor Authentication
TOTP-2FA is inbegrepen op elk plan, met optionele email-OTP fallback. 8 eenmalige recovery codes per gebruiker. Verplicht voor admins.
Alleen EU-hosting
Primaire regio: Frankfurt. Secundair: Stockholm. Geen data gaat ooit naar niet-EER-jurisdicties zonder een gedocumenteerde Standard Contractual Clause.
Tenant-isolatie
Elke klantsite draait in zijn eigen DB-scope. Plugins draaien in een sandbox met disable_functions + open_basedir-profiel — één tenant kan een ander niet beïnvloeden.
Rate limiting + audit log
Per-IP rate limits op elk publiek formulier. Elke admin-actie wordt gelogd in het activity log met onderwerp, actor, IP en een volledige diff van gewijzigde velden.
Praktijken die we volgen
Jaarlijkse externe pentest
Onafhankelijk EU-bureau. Kritieke bevindingen worden verholpen voordat het rapport wordt ondertekend.
SAST in CI
Elke PR draait statische analyse (Psalm + Larastan). PR's kunnen niet mergen met security-severity > medium.
Dependency-monitoring
Composer + npm dependencies worden dagelijks gescand. Kritieke CVE's triggeren een same-day patchrelease.
Secrets management
Geen secrets in de repo. Productie-secrets staan in HashiCorp Vault met kwartaalrotatie.
Back-ups + restore-drills
Dagelijkse versleutelde snapshots, 30 dagen bewaard. We draaien per kwartaal een volledige restore-drill.
Incident response
Gedocumenteerd runbook. Severity 1-incidenten krijgen binnen 14 dagen een publieke post-mortem op /blog.
Ondertekende webhooks
Uitgaande webhooks ondertekend met HMAC-SHA256. Klanten verifiëren per request om vervalsing te voorkomen.
Wachtwoord-hashing
bcrypt op cost 12 (configureerbaar). Geen wachtwoord verlaat ooit ongehasht de request-grens.
Responsible disclosure
Een kwetsbaarheid gevonden? Mail security@radcms.io met reproductie-stappen. Versleutel met onze PGP-sleutel voor gevoelige bevindingen.
Onze toezegging
- Je melding binnen 48 uur bevestigen.
- Een triage-beslissing binnen 5 werkdagen (in scope / out of scope / duplicaat).
- Je op de hoogte houden tot het probleem is opgelost.
- Je publiek vermelden (als je dat wilt) zodra de fix live is.
- Een bounty betalen voor geldige critical/high bevindingen (case-by-case, op dit moment tot €5.000).
Test alsjeblieft niet tegen klantdata, gebruik geen automatische scanners die veel volume genereren, en geef ons redelijke tijd om te herstellen voor publieke disclosure.
Audit loopt · doel 2026
Beschikbaar voor Enterprise-plannen