Webbeveiliging is cruciaal om websites te beschermen tegen hackers, datalekken en misbruik. Met deze checklist dek je de belangrijkste risico’s af.

Basisbeveiliging

RichtlijnVoorbeeld / Tip
Gebruik HTTPSInstalleer een SSL-certificaat → https:// i.p.v. http://
Sterke wachtwoordenMinimaal 12 tekens, gebruik 2FA waar mogelijk
Regelmatige updatesHoud CMS, plugins en libraries up-to-date
Beperk gebruikersrechtenGeef alleen noodzakelijke rechten (principle of least privilege)

Invoer & validatie

RichtlijnVoorbeeld / Tip
Sanitize user inputVerwijder gevaarlijke karakters: <, >, ', "
Gebruik prepared statementsVoor SQL-queries: db.query("SELECT * FROM users WHERE id = ?", [id])
Server-side validatieValideer niet alleen met JavaScript, maar ook op de server

XSS (Cross-Site Scripting)

RichtlijnVoorbeeld / Tip
Escape outputGebruik &lt; i.p.v. < in gebruikersinput
Content Security Policy (CSP)<meta http-equiv="Content-Security-Policy" content="default-src 'self'">
Geen inline scriptsScheid JavaScript in aparte bestanden

CSRF (Cross-Site Request Forgery)

RichtlijnVoorbeeld / Tip
Gebruik CSRF-tokensUnieke token per formulieractie
SameSite cookiesSet-Cookie: sessionId=abc; SameSite=Strict; Secure
Dubbele bevestiging voor gevoelige actiesExtra klik of wachtwoord voor bijvoorbeeld account verwijderen

Cookies & sessies

RichtlijnVoorbeeld / Tip
Gebruik Secure en HttpOnlySet-Cookie: auth=xyz; Secure; HttpOnly
Beperk sessieduurLaat sessies verlopen na inactiviteit
Gebruik sterke sessie-ID’sVermijd voorspelbare waarden

Headers beveiligen

HeaderVoorbeeld
Content-Security-Policydefault-src 'self'
X-Content-Type-Optionsnosniff (voorkomt MIME-sniffing)
X-Frame-OptionsDENY (voorkomt clickjacking)
Strict-Transport-Securitymax-age=31536000; includeSubDomains; preload

Bestanden & uploads

RichtlijnVoorbeeld / Tip
Controleer bestandstypenAlleen jpg, png, pdf toestaan
Beperk bestandsgrootteVoorkomt DoS via grote uploads
Sla uploads buiten root opNooit direct uitvoerbaar in /public/

Logging & monitoring

RichtlijnVoorbeeld / Tip
Log verdachte activiteitenInlogpogingen, mislukte requests
Gebruik intrusion detectionTools zoals Fail2Ban of OSSEC
Controleer foutmeldingenToon 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).