WordPress beveiligen — 10 essentiële stappen
95% van succesvolle WordPress-hacks gebruikt bekende, te voorkomen zwakheden. Deze tien maatregelen sluiten samen het grootste deel van die routes af.
Stappenplannen en oplossingen die ik schrijf terwijl ik ze zelf nodig heb — gehackte sites, DNS-chaos, mailmigraties, foutmeldingen om 23u. Geen theorie, maar wat er in de praktijk werkt.
95% van succesvolle WordPress-hacks gebruikt bekende, te voorkomen zwakheden. Deze tien maatregelen sluiten samen het grootste deel van die routes af.
Botnets bestoken je login-pagina dagelijks. Vier lichtgewicht methoden om brute-force tegen te houden zonder zware security-plugin: Cloudflare rate-limiting, .htaccess IP-whitelist, basic-auth op wp-login en XML-RPC blokkeren. Met access.log-diagnose en complete eindconfiguratie.
Drie korte DNS-records die het verschil maken tussen 'mijn mails komen aan' en 'alles wordt als spam gemarkeerd'. Stappenplan met DNS-voorbeelden en valkuilen.
Het de facto standaard tool voor IMAP-mailbox-migraties. Concrete commando's, voorbeelden voor Hostnet, Microsoft 365 en Gmail, plus oplossingen voor de meest voorkomende problemen.
Chinese tekens in je Google-zoekresultaten terwijl je site er normaal uit ziet? Dit is de cloaking-hack die je domein-reputatie sloopt — en hoe je 'm grondig verwijdert.
DNS lijkt eng. In de praktijk is het een telefoonboek met een paar regeltypes. Een toegankelijke uitleg van alle records waar je als site-eigenaar mee te maken krijgt.
Eén verkeerde regel en je site werpt 500-errors. Maar gebruikt zoals bedoeld is .htaccess je krachtigste tool voor redirects, beveiliging en performance. Een gids met praktijkvoorbeelden en valkuilen.
Overzicht van alle HTTP-codes (1xx tot 5xx) met praktijk-uitleg en directe doorklik naar fix-gidsen. Voor als je een 4xx of 5xx ziet en wil weten wat het is en wat je eraan moet doen.
De meest beruchte HTTP-status. Wanneer is 't normaal en wanneer een symptoom van iets ergers? Inclusief WordPress-permalinks-fix en wat je doet met inkomende links naar verwijderde pagina's.
De permanente redirect. Wanneer gebruik je 'm, hoe configureer je 'm in .htaccess of WordPress, en wat is de SEO-impact bij grote site-migraties?
De tijdelijke redirect. Wanneer is 302 de juiste keuze (A/B-test, geo, maintenance) en wanneer maakt 'ie je SEO kapot? Plus het verschil met 307.
Verschil met 403, hoe HTTP Basic Auth werkt, en het meest voorkomende WordPress-issue: een Authorization-header die door je hosting gestript wordt voordat 'ie WordPress bereikt.
Vier plekken in de stack hebben een upload-limit (PHP, Apache, Nginx, Cloudflare). Eén te lage waarde geeft 413. Volledige uitleg met PHP-FPM-, .user.ini- en client_max_body_size-fixes.
Rate-limiting in lagen: Cloudflare, server (mod_evasive/fail2ban) en WordPress-plugin. Bescherm wp-login zonder Wordfence en zonder per ongeluk je eigen IP buiten te sluiten.
De truc zit niet in 'snel knippen en plakken' tussen twee hosters, maar in een slimme overlapping van een paar dagen. Stappenplan met TTL-trucs, /etc/hosts test, DNS-switch en mail-migratie.
Viagra of Cialis-spam in je Google-resultaten? Een van de oudste WordPress-aanvallen — geraffineerd verstopt in posts, comments, wp_options en kwetsbare plugins. Compleet stappenplan om alle verstopplekken te vinden.
Search Console is gratis, geeft je inzage in hoe Google jouw site ziet, en kost je 30 minuten om in te stellen. Toch heeft de meeste mkb-site het niet eens geconfigureerd. Dit is wat je mist — en hoe je begint.
Niet elke website heeft een cookie banner nodig. Sterker: bij veel zakelijke sites is hij wettelijk overbodig. Dit is wanneer je 'm écht moet hebben, en welke privacy-vriendelijke alternatieven helemaal geen banner vereisen.
Een mislukte plugin-update op vrijdagmiddag, een themewijziging die de homepage breekt, een PHP-versie-upgrade die WooCommerce stilzet — allemaal vermijdbaar met een staging-site. Vier methodes uitgelegd.
Drupal heeft een gunstigere uitgangspositie dan WordPress: kleiner attack-surface, granulaire permissies, professioneel security-team. Maar precies daarom worden lekke Drupal-sites vaak hárder geraakt. Tien stappen die het verschil maken.
Joomla heeft uitstekende ingebouwde security-tooling — maar de meeste sites benutten amper de helft. VEL-check, htaccess.txt, Akeeba Admin Tools en built-in 2FA: zo haal je het maximum eruit.
CMS Made Simple is geen WordPress of Joomla qua marktaandeel — juist daarom worden lekke CMSMS-sites vaak gericht aangevallen. Tien stappen voor mensen die hun installatie serieus nemen.
Mail van je hoster: "PHP 8.1 wordt uitgeschakeld over zes weken." Stappenplan voor compatibility-checks, per-CMS instructies (WordPress, Drupal, Joomla, OpenCart, CMSMS), control panel-stappen en rollback.
"Mijn site is traag" is een symptoom, geen diagnose. Tien specifieke gebieden die samen 95% van trage WordPress-sites verklaren — met benchmarks, tools en concrete acties. Lighthouse 40 naar 90+ in één dagdeel.
Bij 7 op de 10 trage WordPress-sites is dit de hoofdoorzaak — een opgeblazen wp_options-tabel die op elke pageload onnodig honderden MB's de PHP-memory in trekt. Diagnose in 30 sec met SQL, top boosdoeners en stap-voor-stap fixes zonder iets te slopen.
Hoster meldt verdachte uitgaande mail of heeft je account al geschorst — race tegen de klok. Hoe je in 30 minuten de bloeding stopt, het verschil tussen echte hack en spoofing onderscheidt, alle vectoren opruimt en je domein van blacklists krijgt.
Japanse karakters in Google-zoekresultaten met namaak Louis Vuitton/Gucci/Yeezy-listings, terwijl je site er normaal uitziet? Dit is de cloaking-hack die specifiek Googlebot bedient. Stappenplan om alle verstopplekken op te ruimen en het toegangspunt dicht te gooien.
Wat zijn cron-jobs, waarom is WordPress' wp-cron problematisch op grote sites, en hoe stel je een echte server-cron in via cPanel, Plesk of DirectAdmin? Met cron-syntax, debug-tips en concrete voorbeelden.
Server begrijpt je verzoek en weigert het bewust. File permissions, htaccess deny-rule, ModSecurity, hotlink-protection, security-plugin die je IP blokt of Cloudflare-rule — zes hoofdoorzaken met concrete fixes per scenario.
Bezoekers krijgen NET::ERR_CERT_DATE_INVALID, NET::ERR_CERT_AUTHORITY_INVALID of een Firefox/Safari-equivalent. Per browser-foutcode wat het betekent en hoe je 'm fixt — verlopen cert, mismatch, missing chain, mixed content.
Contactformulier zwijgt, WC-bevestigingen ontbreken, klanten klagen. Waarom PHP mail() in 2026 fundamenteel slecht werkt, en het complete stappenplan met SMTP-plugin, mailprovider-keuze en SPF/DKIM/DMARC om mail blijvend werkend te krijgen.
WordPress laten versturen via M365 in 2026 — moderne OAuth-koppeling met Microsoft Graph API stap voor stap. App-registratie in Entra ID, WP Mail SMTP-configuratie, troubleshooting van Basic Auth-deprecatie en alternatieven voor hoge volumes.
Gmail of Workspace als WordPress-mailer in 2026 — moderne OAuth via Google Cloud Console stap voor stap. App Passwords als alternatief, SMTP Relay voor Workspace high-volume, complete troubleshooting en wanneer je beter een transactional service kiest.
Server zegt "tijdelijk niet beschikbaar" — meestal CloudLinux LVE-limit, PHP-FPM-saturatie, bot-aanval of WAF die te streng staat. Diagnose en concrete fixes per scenario, met onderscheid van 502 en 504.
Anders dan een 500: hier kreeg de proxy (Cloudflare, Nginx) een ongeldige response van je origin. PHP-FPM crashte, workers uitgeput, of Cloudflare kan origin niet bereiken. Diagnose en fixes per scenario.
Backend reageert niet op tijd — trage query, externe API die hangt, PHP-FPM-saturatie of de Cloudflare-100-seconden-limiet. Waarom timeouts verhogen meestal géén oplossing is, en wat wél werkt.
De server zegt "iets ging mis" maar niet wat — de echte fout staat in error_log. Compleet stappenplan: htaccess, PHP-fatal, memory, file permissions, plugin-conflict, ModSecurity, PHP-versie. Diagnose en fixes per scenario.
Klassieke PHP-fout die door BOM, whitespace boven <?php of vroege output ontstaat. Hoe je 'm in 30 seconden lokaliseert via de fouttekst zelf, hoe je BOM detecteert en verwijdert, en preventie zodat 't niet via een omweg terugkomt.
Net SSL geïnstalleerd of Cloudflare aangezet en nu krijgt iedereen "redirected you too many times"? Hoe je de keten debugt met curl, en concrete fixes per oorzaak: Cloudflare Flexible-mode, WordPress siteurl-mismatch, htaccess-conflict, www-loop.
Vastzittend .maintenance-bestand na een afgebroken update — site offline voor bezoekers en Google. Hoe je 'm in 30 seconden verwijdert, wat je daarna moet checken, en hoe je voorkomt dat 't volgende keer opnieuw gebeurt.
Vier manieren om je site tijdelijk offline te zetten zonder extra plugin: native .maintenance-bestand, branded maintenance.php-template, .htaccess-redirect met IP-bypass en WP-CLI. Inclusief professionele onderhoudspagina-template en SEO-impact-uitleg.
De vijf gevaarlijkste code-snippets uit blog-tutorials: session_start dat REST API breekt, wp_redirect zonder voorwaarde, infinite loops in save_post, dure DB-queries op init en plugin-functionaliteit in functions.php. Plus hoe je uit de mess komt.
De generieke melding sinds WP 5.2 zegt niets — de echte fatal staat in debug.log, error_log of de recovery-mail. Hoe je 'm vindt, hoe je weer toegang krijgt, en welke oorzaken het meeste voorkomen.
"Fatal error: Allowed memory size of 134217728 bytes exhausted" — wat is PHP memory_limit, hoe verhoog je 'm per CMS en control panel, en wanneer is meer geheugen geven niet de echte oplossing?
PHP heeft je script halverwege beëindigd omdat het te lang duurde. Wanneer is een verhoging van max_execution_time gerechtvaardigd, en wanneer zit er een traag-script onder dat je niet met meer tijd oplost?
De fout is misleidend: in 90% van de gevallen is de MySQL-server niet weg. Vier hoofdoorzaken (max_allowed_packet, wait_timeout, MySQL-crash, persistent connections) en de exacte fix per stuk.
Een van de weinige PHP-fouten die letterlijk vertelt waar het probleem zit. Hoe je BOM-tekens, whitespace voor <?php en debug-output verwijdert die de fout veroorzaken.
De meest gevreesde WordPress-fout. Vier hoofdoorzaken (credentials, MySQL down, max_connections, corrupte DB) met diagnose in 5 minuten en exacte fix per scenario.
Vijf hoofdoorzaken: ontbrekende Composer autoload, plugin-volgorde, namespace-mismatch, file permissions, of een gedeactiveerde plugin die door een andere wordt gebruikt. Met fix per stuk.
Vrijwel altijd het symptoom van een PHP 8-upgrade. Wat de melding betekent, waarom dezelfde code eerder werkte, en hoe je 'm fixt in WordPress-widgets, plugin-classes en hook-callbacks.
De gevreesde witte pagina met één regel tekst. Negen oorzaken in volgorde van waarschijnlijkheid: verkeerde credentials, DB_HOST gewijzigd, server down, max_connections, corrupte tabellen, vol-database, ontbrekende mysqli, hosting-suspensie, brute-force op wp-login.
"Warning: mysqli_connect(): Access denied", "mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, bool given" — alle veelvoorkomende mysqli-fouten met letterlijke teksten, oorzaken en concrete fixes.
Voor 95% van de sites is Let's Encrypt prima — maar voor welke 5% is betaald wel zinvol? Het echte verschil tussen DV, OV en EV, plus de mythes rond EV-certificaten en de groene balk die sinds 2019 niet meer bestaat.
Meer artikelen volgen — over Drupal-beveiliging, hosting-migraties, e-mail-configuratie, performance en specifieke hack-recovery scenario's.