Niet live gaan zonder deze checklist
De overgang van ontwikkeling naar productie is het moment waarop beveiligingsfouten consequenties krijgen. Wat in een testomgeving een bug is, wordt in productie een kwetsbaarheid. Deze checklist helpt u de kritieke controles uit te voeren vóórdat uw applicatie live gaat.
1. Infrastructuur en server
SSL/TLS
- [ ] SSL/TLS-certificaat geïnstalleerd en geldig
- [ ] HTTPS enforced (HTTP redirect naar HTTPS)
- [ ] HSTS-header actief met voldoende max-age (minimaal 1 jaar)
- [ ] TLS 1.2 als minimum (TLS 1.0 en 1.1 uitgeschakeld)
- [ ] Sterke cipher suites geconfigureerd
- [ ] SSL Labs score minimaal A
Server
- [ ] Productie-modus actief (geen debug/development mode)
- [ ] Server-versie headers verborgen (
Server,X-Powered-Byverwijderd) - [ ] Directory listing uitgeschakeld
- [ ] Standaardpagina's verwijderd (welkomstpagina's, phpinfo)
- [ ] Firewall actief (alleen noodzakelijke poorten open)
- [ ] SSH: key-based authenticatie, geen root login, niet-standaard poort
DNS
- [ ] CAA-record geconfigureerd (beperkt welke CA's certificaten mogen uitgeven)
- [ ] DNSSEC actief indien ondersteund door registrar
- [ ] SPF, DKIM en DMARC voor e-maildomeinen
2. Applicatie
Authenticatie
- [ ] Wachtwoord-hashing met bcrypt, scrypt of Argon2
- [ ] Brute force bescherming (rate limiting, account lockout)
- [ ] Sessietokens veilig gegenereerd (cryptografisch willekeurig)
- [ ] Sessie-timeout geconfigureerd (inactiviteit + absolute maximumduur)
- [ ] Sessie-invalidatie bij wachtwoordwijziging
- [ ] MFA beschikbaar voor beheeraccounts
- [ ] Wachtwoord-reset via tijdelijke, eenmalige tokens
Autorisatie
- [ ] Rolgebaseerde toegangscontrole (RBAC) geïmplementeerd
- [ ] Serverzijdige autorisatiecontrole op elk endpoint
- [ ] IDOR-bescherming (Insecure Direct Object References)
- [ ] Admin-functionaliteit gescheiden van gebruikersfunctionaliteit
Input en output
- [ ] Alle gebruikersinvoer gevalideerd (serverzijdig)
- [ ] Parameterized queries voor alle database-operaties
- [ ] Output encoding/escaping tegen XSS
- [ ] Bestandsuploads gevalideerd en gesandboxed
- [ ] Content-Security-Policy header geïmplementeerd
3. Security headers
- [ ]
Content-Security-Policy— beschermt tegen XSS en code-injectie - [ ]
X-Content-Type-Options: nosniff— voorkomt MIME-sniffing - [ ]
X-Frame-Options: DENYofSAMEORIGIN— voorkomt clickjacking - [ ]
Referrer-Policy— beperkt referrer-informatie - [ ]
Permissions-Policy— beperkt browser-API toegang - [ ]
Strict-Transport-Security— forceert HTTPS - [ ]
X-XSS-Protection: 0— laat CSP het werk doen (vermijd legacy browser filter)
4. Gegevensbescherming
Opslag
- [ ] Gevoelige data versleuteld (at rest)
- [ ] Database-credentials niet in code (gebruik environment variables)
- [ ] Geen hardcoded secrets, API keys of tokens
- [ ] .env-bestanden niet toegankelijk via web
- [ ] Git-repository bevat geen secrets (controleer historie)
Transport
- [ ] Alle API-communicatie via HTTPS
- [ ] Cookies met
Secure,HttpOnlyenSameSiteattributen - [ ] Geen gevoelige data in URL-parameters
- [ ] CORS correct geconfigureerd (niet
*in productie)
Logging
- [ ] Geen wachtwoorden of tokens in logs
- [ ] Geen PII (persoonsgegevens) in logs tenzij noodzakelijk
- [ ] Logs beveiligd tegen ongeautoriseerde toegang
- [ ] Log-retentie geconfigureerd
5. Dependencies
- [ ] Alle dependencies up-to-date
- [ ] Geen bekende kwetsbaarheden (
npm audit,pip audit, etc.) - [ ] Lockfile aanwezig en gecommit (package-lock.json, pnpm-lock.yaml)
- [ ] Ongebruikte dependencies verwijderd
- [ ] Development dependencies niet in productie-build
6. Foutafhandeling
- [ ] Generieke foutmeldingen naar gebruikers (geen stacktraces)
- [ ] Gedetailleerde fouten alleen in logs (niet in responses)
- [ ] Custom 404- en 500-pagina's
- [ ] Geen technische details in productie-errors
- [ ] Error monitoring actief (Sentry, LogRocket, etc.)
7. AVG/Privacy
- [ ] Privacyverklaring aanwezig en actueel
- [ ] Cookiebanner conform AP-richtlijnen
- [ ] Verwerkingsregister bijgewerkt
- [ ] Verwerkersovereenkomsten met alle derde partijen
- [ ] Data minimalisatie — alleen noodzakelijke gegevens verzamelen
- [ ] Bewaartermijnen gedefinieerd en geïmplementeerd
8. Back-up en recovery
- [ ] Automatische back-ups geconfigureerd
- [ ] Back-ups op separate locatie opgeslagen
- [ ] Back-ups versleuteld
- [ ] Restore-procedure getest
- [ ] Recovery Time Objective (RTO) gedefinieerd
- [ ] Recovery Point Objective (RPO) gedefinieerd
9. Monitoring
- [ ] Uptime monitoring actief
- [ ] Error tracking geconfigureerd
- [ ] Security alerting bij verdachte activiteit
- [ ] Performance monitoring
- [ ] SSL-certificaat verloop monitoring
10. Documentatie
- [ ] Incident response plan opgesteld
- [ ] Contactlijst voor security-incidenten
- [ ] Deployment procedure gedocumenteerd
- [ ] Rollback procedure getest
Scoretabel
| Categorie | Items | Afgevinkt | Score | |---|---|---|---| | Infrastructuur | 12 | ___ | ___% | | Applicatie | 15 | ___ | ___% | | Security headers | 7 | ___ | ___% | | Gegevensbescherming | 11 | ___ | ___% | | Dependencies | 5 | ___ | ___% | | Foutafhandeling | 5 | ___ | ___% | | AVG/Privacy | 7 | ___ | ___% | | Back-up en recovery | 6 | ___ | ___% | | Monitoring | 5 | ___ | ___% | | Documentatie | 4 | ___ | ___% |
Minimale score voor live: 80% in elke categorie. Items in categorie 1-4 zijn niet-onderhandelbaar.
Geautomatiseerde controle
Veel van deze checks kunnen geautomatiseerd worden gescand. Bespaar tijd en voorkom menselijke fouten door geautomatiseerde security scans in te zetten voor en na elke deployment.
Scan uw website gratis met WarDek — OWASP, NIS2, AVG, AI Act compliance in één scan.