Uw bezoekers komen terecht op een loterijpagina, een pillenwinkel of een nep-helpdesk, terwijl u uw site gewoon ziet. Dat is het kenmerk van een geïnjecteerde doorverwijzing, meestal een voorwaardelijke. Deze gids legt uit hoe u haar nabootst, haar vindt in de bestanden of de database, en de toegang sluit waarlangs ze is geplaatst.
wp-config.php..htaccess, de PHP-bestanden, de database en de adresinstellingen van de site.wp-content/uploads, plugins om opnieuw te installeren of te verwijderen.Een doorverwijzing die bij een hack is geplaatst, kiest voor wie ze geldt. Meestal spaart ze de persoon die de site beheert, zodat ze zo lang mogelijk blijft zitten. De meest voorkomende voorwaarden:
Referer van het verzoek.User-Agent.Een klant die schrijft “uw site stuurt me ergens anders heen”, neemt u dus serieus, ook als bij u alles correct wordt weergegeven.
Verplaats u in de bezoeker die ermee te maken krijgt:
Hebt u toegang tot een terminal, dan vraagt deze opdracht uw homepage op en doet zich daarbij voor als een iPhone die van Google komt:
curl -s -i -A "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X)" -e "https://www.google.com/" https://www.uw-site.com/
Lees de eerste regels van het antwoord. Een code 301 of 302 gevolgd door een regel Location: naar een onbekend adres wijst op een doorverwijzing door de server: die zit in .htaccess of in een PHP-bestand. Een code 200 terwijl de browser wel wordt doorgestuurd, wijst op een doorverwijzing in de pagina, in JavaScript: die zit meestal in de database of in een bestand van het thema.
wp-config.php, constante DB_PASSWORD), en daarna elk WordPress-beheerdersaccount.AUTH_KEY tot NONCE_SALT in wp-config.php door een nieuwe set, gegenereerd op https://api.wordpress.org/secret-key/1.1/salt/. Alle open sessies worden afgesloten, ook die van de indringer.wp config shuffle-salts
In de root van de site, en soms in een submap, kan .htaccess herschrijfregels bevatten die de indringer heeft toegevoegd. Het blok dat WordPress zelf schrijft, is kort en staat tussen # BEGIN WordPress en # END WordPress:
# BEGIN WordPress
# De richtlijnen (regels) tussen "BEGIN WordPress" en "END WordPress" worden
# dynamisch gegenereerd en zouden alleen aangepast mogen worden via WordPress filters.
# Alle wijzigingen aan de richtlijnen tussen deze markeringen worden overschreven.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Een regel RewriteCond die %{HTTP_REFERER} (google, bing, facebook) of %{HTTP_USER_AGENT} (android, iphone, mobile) test, gevolgd door een RewriteRule naar een extern adres, is de doorverwijzing. Cache- en beveiligingsplugins schrijven ook eigen blokken, gemarkeerd met hun naam: leg elk blok naast de lijst van uw plugins voordat u het verwijdert.
WP-CLI vergelijkt de bestanden van de WordPress-kern en van de plugins met de controlesommen die WordPress.org publiceert, en toont elk gewijzigd of toegevoegd bestand:
wp core verify-checksums
wp plugin verify-checksums --all
De tweede opdracht dekt de plugins die via de repository van WordPress.org worden verspreid. Een plugin die u bij de maker hebt gekocht, vergelijkt u met een verse kopie uit uw account bij die maker. Dat komt vaak voor: van de 540 WordPress-websites van mkb-bedrijven in onze meting van 1 september 2026 draagt 66 % minstens één plugin die niet in de publieke repository staat.
Zonder WP-CLI geven twee zoekopdrachten een eerste selectie:
find . -name "*.php" -mtime -30
find wp-content/uploads -name "*.php"
De eerste toont de PHP-bestanden die de afgelopen 30 dagen zijn gewijzigd, de tweede de PHP-bestanden in de mediamap, waar ze standaard verdacht zijn (sommige plugins zetten er een lege index.php, en die is legitiem). Een wijzigingsdatum is te vervalsen: een oud bestand op de verkeerde plek blijft het bekijken waard.
Open eerst wp-config.php, de index.php in de root, de functions.php en de header.php van het actieve thema, en de map wp-content/mu-plugins: de plugins daarin worden automatisch geladen en zijn niet vanuit het dashboard uit te schakelen. De signalen om naar te zoeken: eval(, base64_decode(, gzinflate(, str_rot13(, lange onleesbare tekenreeksen, of window.location gevolgd door een adres dat u niet kent.
Een doorverwijzing in JavaScript nestelt zich graag in de inhoud van pagina’s of in de instellingen, waar geen enkel bestand haar laat zien. WP-CLI zoekt een tekenreeks in alle tabellen van WordPress:
wp db search "<script"
wp db search "fromCharCode"
Zonder WP-CLI voert u dezelfde zoekopdrachten uit in phpMyAdmin, tabblad SQL:
SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%<script%';
SELECT option_name FROM wp_options WHERE option_value LIKE '%<script%';
Sommige resultaten zijn legitiem: een tool voor bezoekersstatistieken, een cookiebanner of een widget die u zelf hebt geplaatst. Wat met niets overeenkomt dat u hebt geïnstalleerd, verdient een nadere blik, vooral een script dat een adres opbouwt uit tekencodes.
Onder Instellingen > Algemeen moeten “WordPress adres (URL)” en “Site adres (URL)” uw eigen domein tonen. Dezelfde waarden kunnen in wp-config.php worden afgedwongen met de constanten WP_HOME en WP_SITEURL: controleer beide plaatsen.
wp option get home
wp option get siteurl
wp user list --role=administrator
Zijn de constanten gedefinieerd, dan geven de eerste twee opdrachten hun waarde terug. De laatste toont de beheerders met hun registratiedatum; in het dashboard vindt u dezelfde lijst in het menu Gebruikers, gefilterd op de rol Beheerder. Een account dat niemand herkent, verwijdert u, waarbij u de inhoud ervan aan een legitiem account toewijst.
De regel die doorstuurt verwijderen, stopt het symptoom. De toegang die de indringer gebruikte, blijft open zolang ze niet is gevonden, en de doorverwijzing komt binnen enkele dagen terug. De volgorde die standhoudt:
wp-admin en wp-includes en voer daarna wp core download --skip-content --force uit, dat de kern opnieuw schrijft zonder uw plugins, thema’s en media aan te raken. De opdracht overschrijft bestaande bestanden maar verwijdert geen toegevoegde bestanden: daarom gaan de twee mappen eerst weg, en daarom verwijdert u onbekende PHP-bestanden in de root met de hand.wp-content/uploads, de regels die aan .htaccess zijn toegevoegd en de scripts die in de database zijn gevonden.wp cron event list: een taak met een onbekende naam kan de code terugzetten.Bewaart de site persoonsgegevens (formulieren, klantaccounts, bestellingen), noteer dan het tijdstip waarop u de hack hebt vastgesteld. In de Europese Unie schrijft de AVG voor dat een inbreuk in verband met persoonsgegevens uiterlijk 72 uur nadat u er kennis van hebt genomen aan de toezichthoudende autoriteit wordt gemeld, tenzij het niet waarschijnlijk is dat de inbreuk een risico inhoudt voor de rechten en vrijheden van natuurlijke personen.
Zodra Google de doorverwijzing opmerkt, kan Chrome een rode pagina “Gevaarlijke site” tonen voordat de site opent, en kan Google onder uw resultaat “Deze site is mogelijk gehackt” zetten. Het rapport Beveiligingsproblemen in Google Search Console laat zien wat is gevonden en op welke adressen. Is de site opgeschoond, dan start de knop Beoordeling aanvragen de controle.
Een verwijderde doorverwijzing laat één vraag over: wie zorgt er daarna voor de site? Simafri neemt uw WordPress-website over, zet hem weer online op een basis die wij hosten, beveiligen en bijhouden, en zorgt er daarna voor, maand na maand. U houdt uw domeinnaam en uw inhoud.
De geïnjecteerde code leest de User-Agent van de browser en stuurt alleen telefoons door. Wie de site beheert, vaak op een computer, ziet niets. Test vanaf een telefoon op mobiele data, of met curl en de identificatie van een mobiele browser.
Een nieuwe installatie van de kern herschrijft de bestanden van WordPress, zonder de bestanden te verwijderen die een indringer heeft toegevoegd. De database, het thema, de plugins en de mediamap blijven zoals ze zijn, en daar zitten de doorverwijzing en de toegang van de indringer meestal. Een verse kern is één stap van het opschonen, aan te vullen met de database, de plugins, de accounts en de wachtwoorden.
Omdat de toegang die is gebruikt om haar te plaatsen er nog is: een toegevoegd beheerdersaccount, een PHP-bestand verstopt tussen de media, een geplande taak, een kwetsbare plugin. Elk daarvan maakt het mogelijk de code na het opschonen terug te zetten. Controleer de accounts, de map wp-content/uploads, de geplande taken en de versies van de plugins, en wijzig daarna opnieuw de wachtwoorden.
Open Google Search Console en daarin het rapport Beveiligingsproblemen: het toont de gevonden problemen en voorbeeld-URL’s. Is de site nog niet geverifieerd in Search Console, dan dekt verificatie via een DNS-record het hele domein.
Simafri
Laten we het over uw website hebben
Vertel ons in een paar woorden over uw project: wij nemen snel contact met u op.
Bedankt! Uw aanvraag is verzonden. We nemen spoedig contact met u op.
Liever per e-mail? Schrijf ons op support@simafri.com.