Webbeveiliging is cruciaal om websites te beschermen tegen hackers, datalekken en misbruik. Met deze checklist dek je de belangrijkste risico’s af.
Basisbeveiliging
| Richtlijn | Voorbeeld / Tip | 
|---|
| Gebruik HTTPS | Installeer een SSL-certificaat → https://i.p.v.http:// | 
| Sterke wachtwoorden | Minimaal 12 tekens, gebruik 2FA waar mogelijk | 
| Regelmatige updates | Houd CMS, plugins en libraries up-to-date | 
| Beperk gebruikersrechten | Geef alleen noodzakelijke rechten (principle of least privilege) | 
Invoer & validatie
| Richtlijn | Voorbeeld / Tip | 
|---|
| Sanitize user input | Verwijder gevaarlijke karakters: <,>,'," | 
| Gebruik prepared statements | Voor SQL-queries: db.query("SELECT * FROM users WHERE id = ?", [id]) | 
| Server-side validatie | Valideer niet alleen met JavaScript, maar ook op de server | 
XSS (Cross-Site Scripting)
| Richtlijn | Voorbeeld / Tip | 
|---|
| Escape output | Gebruik <i.p.v.<in gebruikersinput | 
| Content Security Policy (CSP) | <meta http-equiv="Content-Security-Policy" content="default-src 'self'"> | 
| Geen inline scripts | Scheid JavaScript in aparte bestanden | 
CSRF (Cross-Site Request Forgery)
| Richtlijn | Voorbeeld / Tip | 
|---|
| Gebruik CSRF-tokens | Unieke token per formulieractie | 
| SameSite cookies | Set-Cookie: sessionId=abc; SameSite=Strict; Secure | 
| Dubbele bevestiging voor gevoelige acties | Extra klik of wachtwoord voor bijvoorbeeld account verwijderen | 
Cookies & sessies
| Richtlijn | Voorbeeld / Tip | 
|---|
| Gebruik Secure en HttpOnly | Set-Cookie: auth=xyz; Secure; HttpOnly | 
| Beperk sessieduur | Laat sessies verlopen na inactiviteit | 
| Gebruik sterke sessie-ID’s | Vermijd voorspelbare waarden | 
Headers beveiligen
| Header | Voorbeeld | 
|---|
| Content-Security-Policy | default-src 'self' | 
| X-Content-Type-Options | nosniff(voorkomt MIME-sniffing) | 
| X-Frame-Options | DENY(voorkomt clickjacking) | 
| Strict-Transport-Security | max-age=31536000; includeSubDomains; preload | 
Bestanden & uploads
| Richtlijn | Voorbeeld / Tip | 
|---|
| Controleer bestandstypen | Alleen jpg, png, pdftoestaan | 
| Beperk bestandsgrootte | Voorkomt DoS via grote uploads | 
| Sla uploads buiten root op | Nooit direct uitvoerbaar in /public/ | 
Logging & monitoring
| Richtlijn | Voorbeeld / Tip | 
|---|
| Log verdachte activiteiten | Inlogpogingen, mislukte requests | 
| Gebruik intrusion detection | Tools zoals Fail2Ban of OSSEC | 
| Controleer foutmeldingen | Toon geen gevoelige info, log details alleen server-side | 
Best practices
- Gebruik 2FA voor beheerders. 
- Schakel directory listing uit in je webserver. 
- Beperk toegang tot de adminomgeving via IP-whitelist. 
- Gebruik hashing (bcrypt, Argon2) voor wachtwoorden, nooit plain text. 
- Test je site regelmatig met penetratietools (bijv. OWASP ZAP).