Meestal begint het met een telefoontje van iemand anders. Een klant die zegt dat je website hem doorstuurt naar een casino. Een collega die in Google op je bedrijfsnaam zocht en tussen de resultaten pagina's in het Japans vond. Of een mail van je hostingpartij met in het onderwerp het woord "suspended".
Je WordPress-site is gehackt. Vervelend, maar je bent zeker niet de eerste. WordPress draait op ongeveer vier op de tien websites, en dat maakt het het favoriete doelwit van iedereen die geautomatiseerd naar zwakke plekken zoekt. Het is niet persoonlijk. Er zit geen hacker die jouw bedrijf heeft uitgekozen. Er draait ergens een script dat duizenden sites per uur afgaat, en dat vond een deur die openstond.
Hieronder lees je wat je nu doet, wat je beter niet doet, en hoe je zorgt dat het niet opnieuw gebeurt.
Is het wel een hack?
Eerst even nagaan of je echt met een hack te maken hebt. De typische signalen:
Je site stuurt bezoekers door naar een andere site, vaak alleen op mobiel of alleen wanneer ze via Google binnenkomen. Daardoor zie jij het zelf soms niet.
Google of Chrome toont een rode waarschuwing: "Deze site is mogelijk gehackt" of "Misleidende site".
Er staan vreemde pagina's in Google. Zoek eens op site:jouwdomein.be. Zie je pagina's over sneakers, pillen of in een taal die je niet spreekt, dan is het prijs.
Er staan beheerders in WordPress die je niet kent.
Je hostingpartij heeft de site offline gehaald, of je mails komen plots als spam aan omdat je server ze massaal verstuurt.
Herken je er een van, lees dan verder. Herken je er geen enkele van maar voelt er iets niet juist, dan is het de moeite om iemand even te laten meekijken. Goede hacks vallen net zo weinig mogelijk op.
Wat je nu moet doen
1. Niet in paniek alles wissen
De eerste reflex is vaak: alles weg en een backup terugzetten. Begrijpelijk, maar wacht nog even. Je wil eerst weten hoe ze binnen zijn geraakt. Zet je gewoon een backup terug, dan staat diezelfde deur nog altijd open en ben je volgende week opnieuw aan de beurt.
En de backup zelf is misschien ook niet proper. Een hack begint zelden op de dag dat je hem opmerkt. Soms zit er al weken een achterdeurtje in je bestanden voor iemand er iets mee doet.
2. Zet de site in onderhoud en verwittig je hosting
Haal de site tijdelijk offline of zet hem in onderhoudsmodus. Zo stuur je geen klanten meer door naar oplichters en beperk je de schade aan je reputatie bij Google.
Contacteer ook je hostingpartij. Goede hosts hebben logs waarin je ziet wat er wanneer gebeurd is. Soms zijn zij zelfs eerder dan jij op de hoogte.
3. Verander álle wachtwoorden
Niet alleen dat van WordPress. Ook:
alle beheerdersaccounts in WordPress (en verwijder wie je niet kent),
je hostingaccount,
FTP of SFTP,
de database,
de mailboxen op hetzelfde domein.
Gebruik voor elk een ander, lang wachtwoord. Een wachtwoordbeheerder maakt dat haalbaar.
4. Opkuisen, of laten opkuisen
Hier wordt het technisch. Een grondige opkuis betekent ongeveer dit:
de WordPress-bestanden zelf vervangen door een verse, officiële versie;
alle plugins en het thema opnieuw installeren vanaf de officiële bron, niet vanaf de kopie die al op je server stond;
de uploadmap doorzoeken op bestanden die daar niet horen (PHP-bestanden tussen je foto's, bijvoorbeeld);
de database nakijken op ingevoegde scripts en onbekende gebruikers;
de beveiligingssleutels in wp-config.php vernieuwen, zodat iedereen die nog ingelogd is eruit vliegt.
Zegt bovenstaande lijst je weinig, dan is dit het moment om iemand in te schakelen. Dat is geen schande. Een half opgekuiste site is gevaarlijker dan een site waarvan je weet dat hij besmet is, omdat je denkt dat het probleem opgelost is.
5. Ruim Google op
Heeft Google je site gemarkeerd, dan verdwijnt die waarschuwing niet vanzelf. In Google Search Console vind je onder "Beveiligingsproblemen" wat Google gevonden heeft. Is alles proper, dan vraag je daar een nieuwe beoordeling aan. Reken op een paar dagen.
De spampagina's die in de zoekresultaten opdoken, verdwijnen geleidelijk zodra ze niet meer bestaan. Wil je dat sneller, dan kan je ze in Search Console tijdelijk laten verbergen.
6. Denk aan je klantgegevens
Dit wordt vaak vergeten. Kwamen er via je site persoonsgegevens binnen, zoals formulieren met namen en e-mailadressen, een klantenzone of een webshop, en konden de hackers daarbij? Dan heb je mogelijk te maken met een datalek. In dat geval moet je dat in principe binnen 72 uur melden bij de Gegevensbeschermingsautoriteit.
Ik ben webontwikkelaar, geen jurist. Twijfel je, laat dan iemand meekijken die dat wel is. Maar negeer het niet.
Hoe ze binnenkwamen (bijna altijd)
Het goede nieuws: WordPress zelf is behoorlijk veilig. De kern wordt goed onderhouden en beveiligingsproblemen worden snel opgelost.
Het minder goede nieuws: bijna niemand draait alleen WordPress zelf. Volgens beveiligingsbedrijven als Patchstack zit het overgrote deel van de gevonden kwetsbaarheden, ruim boven de negentig procent, in plugins en thema's. Niet in WordPress.
Bij de sites die ik overneem, zie ik telkens dezelfde oorzaken terugkomen:
Plugins die al maanden of jaren geen update kregen. Soms omdat niemand eraan dacht, soms omdat een update de site ooit stuk maakte en iemand besliste om "het maar zo te laten".
Plugins die niemand nog gebruikt maar die wel nog geïnstalleerd staan. Uitgeschakeld is niet hetzelfde als verwijderd.
Een betaald thema of plugin van een gratis downloadsite. Die "gratis" versies bevatten vaak meer dan je dacht.
Een plugin waarvan de maker gestopt is. Geen updates meer, dus ook geen beveiligingsupdates.
Zwakke of hergebruikte wachtwoorden, zonder tweestapsverificatie.
Niemand die zich verantwoordelijk voelt. De webdesigner leverde de site op in 2019, de hosting is "ergens bij een goedkope partij", en sindsdien heeft niemand nog ingelogd.
Dat laatste is eigenlijk de echte oorzaak. De rest zijn symptomen.
Hoe je het voorkomt
Een WordPress-site veilig houden is geen raketwetenschap. Het vraagt vooral regelmaat.
Update alles, en doe dat geregeld. WordPress, plugins en thema. Kleine beveiligingsupdates mogen automatisch. Grotere updates test je liefst eerst, of laat je testen.
Hou het aantal plugins klein. Elke plugin is code van iemand anders die op je server draait. Stel je bij elke plugin de vraag: hebben we dit echt nodig? Vaak is het antwoord nee.
Installeer alleen plugins die actief onderhouden worden. Kijk wanneer de laatste update was. Twee jaar geleden? Zoek een alternatief.
Zet tweestapsverificatie op elk beheerdersaccount. Dat houdt het overgrote deel van de geautomatiseerde inlogpogingen tegen.
Neem backups die niet op dezelfde server staan. Een backup op de server die gehackt is, is geen backup. Bewaar er ook genoeg, zodat je terug kan naar een versie van vóór de besmetting.
Kies hosting die meedenkt. Een host die zelf malware scant, verouderde PHP-versies niet laat draaien en je verwittigt als er iets raar gebeurt, is een paar euro per maand meer waard.
Spreek af wie verantwoordelijk is. Jij, je webdesigner, een onderhoudscontract: maakt niet uit, zolang er iemand is die het weet. "Ik dacht dat jij dat deed" is de duurste zin in webbeheer.
Of: is WordPress nog de juiste keuze?
Dat is een eerlijke vraag na een hack. En het eerlijke antwoord is: soms wel, soms niet.
Ik werk nog altijd met WordPress, en voor een pak sites is het een prima keuze. Maar wie zoekt naar een WordPress-alternatief, doet dat meestal omdat hij genoeg heeft van de plugin-carrousel: tien plugins voor tien functies, tien updateritmes, tien partijen die op een dag kunnen stoppen of hun prijzen verdubbelen.
Er zijn verschillende alternatieven, elk met hun eigen plek:
Wix of Squarespace als je zelf aan de slag wil en geen maatwerk nodig hebt. Je beveiliging ligt dan bij hen, maar je zit ook vast aan hun platform.
Webflow voor ontwerpers die visueel willen bouwen. Krachtig, maar je betaalt maandelijks en je verhuist er niet zomaar weg.
Craft CMS of Statamic als je een site op maat wil, zonder de afhankelijkheid van een stapel plugins.
Ik bouw zelf in Statamic, en veiligheid is één van de redenen. Niet omdat Statamic onkraakbaar is. Dat is geen enkele software, en ook Statamic krijgt geregeld beveiligingsupdates. Maar het is anders opgebouwd:
Veel minder externe code. Wat je bij WordPress met vijf plugins doet, zit bij Statamic in de kern. Minder code van derden betekent minder deuren.
Standaard geen database. Je inhoud staat in gewone tekstbestanden. Een hele categorie aanvallen die het op de database gemunt heeft, valt daarmee weg.
Geen doelwit voor massascripts. Bots die het web afgaan op zoek naar die ene kwetsbare WordPress-plugin, komen bij een Statamic-site niets tegen.
Gebouwd op Laravel, een framework waar beveiliging vanaf het begin in zit en dat door een groot team actief onderhouden wordt.
Kan ook volledig statisch. Dan is je site een verzameling gewone HTML-pagina's, zonder iets wat er nog te hacken valt op de server.
Er hangt wel een licentie aan Statamic Pro. Waarom ik dat eerder een voordeel vind dan een nadeel, leg ik uit in Statamic kost geld. Dat is precies waarom ik ermee werk.
Even samengevat
Is je WordPress-site gehackt? Niet alles in paniek wissen. Site offline, alle wachtwoorden wijzigen, grondig opkuisen of laten opkuisen, Google verwittigen en nagaan of er klantgegevens gelekt zijn.
Daarna de echte vraag: waarom kon het gebeuren? Meestal is het antwoord niet "WordPress", maar "niemand keek ernaar". Dat kan je oplossen met goed onderhoud. Of met een site die minder onderhoud nodig heeft.
Is je site gehackt, of vertrouw je het zaakje niet? Stuur me een berichtje. Ik kijk wat er aan de hand is en zeg je eerlijk of opkuisen volstaat of dat een nieuwe site de betere investering is.