Stap 1 en 2: sterke wachtwoorden en updates
Stap 1: sterke wachtwoorden en tweefactorauthenticatie
De meest voorkomende aanval op WordPress is brute force: geautomatiseerde scripts die duizenden wachtwoordcombinaties per minuut proberen. Een wachtwoord als "welkom123" is binnen seconden gekraakt. Gebruik daarom wachtwoorden van minimaal twintig tekens met letters, cijfers en speciale tekens. Beter nog: gebruik een wachtwoordmanager zoals 1Password of Bitwarden.
Daarnaast is tweefactorauthenticatie (2FA) essentieel. Zelfs als iemand je wachtwoord raadt, kan hij niet inloggen zonder de code op je telefoon. Plugins als WP 2FA of Wordfence bieden dit gratis aan. Het kost je twee minuten om in te stellen en het blokkeert 99% van de brute-force-aanvallen.
Stap 2: houd WordPress, plugins en themes up-to-date
Volgens WPBeginner komt 52% van alle WordPress-kwetsbaarheden voort uit plugins. Verouderde plugins zijn de nummer-één-ingang voor hackers. Updates bevatten bijna altijd beveiligingspatches. Stel automatische updates in voor minor releases en controleer wekelijks op major updates.
Wat gebeurt er als je site gehackt wordt?
Je website gaat offline of toont ongewenste content. Bezoekers worden doorgestuurd naar phishing-sites. Je contactformulier verstuurt spam. Google plaatst een waarschuwing bij je zoekresultaat: "Deze site is mogelijk gehackt." Daarmee verlies je in een klap het vertrouwen van je bezoekers en je positie in Google.
Financiële gevolgen
Het opschonen van een gehackte WordPress-site kost gemiddeld 500 tot 2.500 euro. Daarbij komen de kosten van omzetverlies, reputatieschade en eventuele AVG-boetes als persoonsgegevens zijn gelekt. Dat is een hoge prijs voor het overslaan van een update.
Google onthoudt problemen. Een gehackte site kan maanden nodig hebben om zijn oude positie in zoekresultaten terug te krijgen. Klanten die een beveiligingswaarschuwing hebben gezien, komen vaak niet meer terug. Bovendien is een eenmaal gehackte site een aantrekkelijk doelwit voor herhaalde aanvallen. Hackers plaatsen namelijk backdoors die moeilijk te vinden zijn.
AVG-meldplicht
Als er persoonsgegevens zijn buitgemaakt, ben je wettelijk verplicht om dit binnen 72 uur te melden bij de Autoriteit Persoonsgegevens. Eigenlijk is goede beveiliging dus niet alleen technisch verstandig, maar ook juridisch noodzakelijk.
Stap 3 en 4: SSL en security headers
Stap 3: SSL/HTTPS activeren
SSL versleutelt de verbinding tussen je bezoeker en je server. Zonder SSL kunnen hackers gegevens onderscheppen die via je site verstuurd worden. Denk aan contactformulieren, inloggegevens en betalingsinformatie. Bovendien markeert Chrome websites zonder SSL als "Niet beveiligd". Dat schrikt bezoekers af.
De meeste hostingpartijen bieden gratis SSL-certificaten aan via Let's Encrypt. Het activeren kost vijf minuten. Vervolgens moet je een redirect instellen van HTTP naar HTTPS, zodat alle verkeer versleuteld verloopt.
Stap 4: security headers instellen
Security headers zijn instructies die je server meestuurt naar de browser. Ze vertellen de browser wat wel en niet is toegestaan. Volgens Google's web.dev zijn headers als X-Content-Type-Options, X-Frame-Options en Content-Security-Policy essentieel voor moderne websites. Ze voorkomen clickjacking, XSS-aanvallen en ongewenste content-injectie.
Deze headers stel je in via je .htaccess-bestand of via je functions.php. Het klinkt technisch, maar de implementatie is een kwestie van tien regels code. Daarmee sluit je een reeks veelvoorkomende aanvalsvectoren af.
Beveiligingsscore: template vs. maatwerk
Elke plugin is een potentieel beveiligingsrisico. Niet omdat plugins per definitie onveilig zijn, maar omdat elke plugin code toevoegt die onderhouden moet worden. Een gemiddelde WordPress-site heeft 20 tot 30 plugins. Elke plugin is een extra deur die op slot moet.
Volgens Wordfence komen de meeste WordPress-hacks binnen via kwetsbare plugins. Een maatwerk theme met minimale plugins verkleint het aanvalsoppervlak drastisch. Daarom bouwen wij bij IntoPixel functionaliteit in de theme-code in plaats van er een plugin voor te installeren.
Template-site (20+ plugins)
Groot aanvalsoppervlak
Veel updateverplichtingen
Conflicten tussen plugins
Maatwerk-site (5-8 plugins)
Klein aanvalsoppervlak
Weinig updateverplichtingen
Geen pluginconflicten
Hardened maatwerk-site
Minimaal aanvalsoppervlak
Security headers actief
Server-level beveiliging
Stap 5, 6 en 7: login, backups en opruimen
Standaard staat WordPress onbeperkte loginpogingen toe. Dat is een open uitnodiging voor brute-force-aanvallen. Beperk het aantal pogingen tot maximaal vijf per kwartier. Na vijf mislukte pogingen wordt het IP-adres tijdelijk geblokkeerd. Plugins als Limit Login Attempts Reloaded of Wordfence regelen dit automatisch.
Daarnaast kun je de standaard login-URL wijzigen. In plaats van /wp-admin/ gebruik je een eigen URL. Dat stopt geautomatiseerde bots die specifiek op /wp-login.php richten. Het is geen waterdichte beveiliging, maar het filtert het gros van de geautomatiseerde aanvallen.
Stap 6: maak regelmatig backups
Backups zijn je vangnet als alles misgaat. Maak dagelijks een automatische backup van je database en wekelijks een volledige backup van je bestanden. Bewaar backups op een externe locatie, niet op dezelfde server als je website. Want als je server gehackt wordt, zijn je backups anders ook weg.
Elke plugin die geïnstalleerd is, vormt een risico. Ook als die plugin niet actief is. De code staat namelijk nog steeds op je server en kan kwetsbaarheden bevatten. Verwijder daarom alle plugins die je niet gebruikt. Niet deactiveren, maar volledig verwijderen.
Hetzelfde geldt voor themes. WordPress installeert standaard drie themes. Als je er maar één gebruikt, verwijder de andere twee. Houd je installatie zo schoon mogelijk. Minder code betekent minder aanvalspunten.
Concreet: plan elke maand een kwartier in om je plugins en themes te controleren. Verwijder wat je niet gebruikt, update wat je wel gebruikt en controleer of er bekende kwetsbaarheden zijn. Die vijftien minuten per maand kunnen je duizenden euro's aan schade besparen.
Stap 8: bestandspermissies en server-beveiliging
Bestandspermissies bepalen wie bestanden op je server mag lezen, schrijven en uitvoeren. Verkeerde permissies zijn een veelgemaakte fout die hackers direct misbruiken. De juiste instellingen zijn: 644 voor bestanden en 755 voor mappen. Het wp-config.php bestand verdient extra bescherming met permissie 440 of 400.
Daarnaast kun je via je .htaccess-bestand de toegang tot gevoelige bestanden blokkeren. Voorkom directe toegang tot wp-config.php, .htaccess zelf en de /wp-includes/ map. Dat zijn drie regels code die een groot verschil maken.
Verder is het verstandig om XML-RPC uit te schakelen als je het niet gebruikt. XML-RPC is een interface die oorspronkelijk bedoeld was voor externe publicatietools, maar tegenwoordig vooral misbruikt wordt voor brute-force-aanvallen en DDoS-amplificatie. De meeste moderne WordPress-sites hebben XML-RPC niet nodig.
Tot slot: beperk de WordPress REST API. Standaard is de REST API publiek toegankelijk. Dat betekent dat iedereen gebruikersinformatie kan opvragen. Beperk de toegang tot ingelogde gebruikers voor endpoints die geen publieke data serveren. Daarmee voorkom je dat aanvallers gebruikersnamen achterhalen en die gebruiken voor gerichte aanvallen.
Beveiliging is geen eenmalige actie
Twijfel je over
de beveiliging van je site?
We doen een beveiligingscheck
en geven je een concreet actieplan.