Waarom WordPress Versie Verbergen?
Je WordPress versie is standaard op meerdere plekken zichtbaar. Dit maakt het voor hackers eenvoudig om te bepalen welke kwetsbaarheden van toepassing zijn op jouw specifieke installatie.
Wanneer een nieuwe WordPress kwetsbaarheid wordt ontdekt, scannen hackers massaal het internet naar websites met die specifieke versie. Door je versie te verbergen, val je niet op in deze scans.
Voordelen van version hardening:
- Minder doelwit voor geautomatiseerde scans
- Hackers weten niet welke exploits werken
- Schonere HTML zonder onnodige meta tags
- Snellere pagina's door verwijdering emoji scripts
Waar WordPress Versie-informatie Lekt
WordPress verraadt zijn versie op verrassend veel plekken:
1. HTML Generator Tag
<meta name="generator" content="WordPress 6.4.2">
2. RSS Feed Generator
<generator>https://wordpress.org/?v=6.4.2</generator>
3. Script/Style Versienummers
<link rel="stylesheet" href="/wp-content/themes/theme/style.css?ver=6.4.2">
<script src="/wp-includes/js/jquery.min.js?ver=3.7.1"></script>
4. REST API Response
{
"name": "Mijn Website",
"generator": "WordPress 6.4.2"
}
De Complete mu-plugin Code
Maak het bestand /wp-content/mu-plugins/wpts-version-hardening.php aan:
<?php
/**********************************************************************
* *
* ************************************************************** *
* * * *
* * WPTS.nl - WordPress Version Hardening * *
* * No Plugins. No Noise. No Fingerprints. * *
* * * *
* * Camouflage, not core modification * *
* * * *
* ************************************************************** *
* *
**********************************************************************/
/* ============================================================
* 1. REMOVE GENERATOR TAGS (HTML, RSS, XHTML)
* ============================================================ */
remove_action('wp_head', 'wp_generator');
add_filter('the_generator', '__return_empty_string');
add_filter('get_the_generator_html', '__return_empty_string');
add_filter('get_the_generator_xhtml', '__return_empty_string');
/* ============================================================
* 2. STRIP ?ver= FROM SCRIPTS & STYLES (FRONTEND ONLY)
* ============================================================ */
add_filter('style_loader_src', 'wpts_strip_wp_version', 999);
add_filter('script_loader_src', 'wpts_strip_wp_version', 999);
function wpts_strip_wp_version($src) {
if (!is_admin() && strpos($src, 'ver=')) {
return remove_query_arg('ver', $src);
}
return $src;
}
/* ============================================================
* 3. REST API GENERATOR CLEANUP
* ============================================================ */
add_filter('rest_index', function ($response) {
if (is_array($response) && isset($response['generator'])) {
unset($response['generator']);
}
return $response;
});
/* ============================================================
* 4. REMOVE VERSION FROM EMOJIS & EMBEDS
* ============================================================ */
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles');
remove_action('wp_head', 'wp_oembed_add_discovery_links');
remove_action('wp_head', 'wp_oembed_add_host_js');
/* ============================================================
* 5. HARD FAIL SAFE (NO CORE TOUCHING)
* ============================================================ */
// Nothing below this line modifies core behavior.
// This file only removes public fingerprints.
// Core updates remain untouched and safe.
Code Uitleg per Sectie
Sectie 1: Generator Tags Verwijderen
Dit verwijdert de WordPress versie uit alle mogelijke outputs:
remove_action('wp_head', 'wp_generator')- Verwijdert meta generator tagthe_generatorfilter - Verwijdert versie uit RSS feedsget_the_generator_html/xhtml- Verwijdert uit andere formaten
Sectie 2: Versienummers uit Scripts & Styles
De ?ver= parameter wordt verwijderd uit alle CSS en JavaScript bestanden:
- Prioriteit 999 zorgt dat het als laatste wordt uitgevoerd
!is_admin()zorgt dat het alleen op de frontend werktremove_query_arg('ver', $src)verwijdert de parameter
Sectie 3: REST API Cleanup
Wanneer iemand /wp-json/ opvraagt, bevat de response normaal een "generator" veld. Deze filter verwijdert dat.
Sectie 4: Emoji & oEmbed Scripts
WordPress laadt standaard emoji-detectie scripts die versie-informatie bevatten. Deze worden volledig verwijderd, wat ook de performance verbetert.
Installatie Stap-voor-Stap
-
1
Maak mu-plugins map aan
Controleer of
/wp-content/mu-plugins/bestaat. Zo niet, maak deze map aan via FTP of bestandsbeheer. -
2
Maak het bestand aan
Maak een nieuw bestand
wpts-version-hardening.phpin de mu-plugins map. -
3
Plak de code
Kopieer de volledige code van hierboven en plak deze in het bestand.
-
4
Klaar!
mu-plugins worden automatisch geladen. Er is geen activatie nodig.
Verificatie
Controleer of de versie-informatie succesvol is verwijderd:
1. Bekijk de HTML Broncode
Open je website en bekijk de broncode (Ctrl+U). Zoek naar "generator" - deze zou niet meer aanwezig moeten zijn.
2. Test REST API
curl -s https://jouwsite.nl/wp-json/ | grep generator
Dit zou geen resultaat moeten geven.
3. Check Scripts & Styles
Bekijk de broncode en zoek naar ?ver= in CSS en JS URLs. Deze parameters zouden verwijderd moeten zijn.
Gratis Security Scan
Test of je versie succesvol verborgen is met onze gratis scanner.
Veelgestelde Vragen
Breekt dit mijn website?
Nee, dit script verwijdert alleen meta-informatie en versienummers. Het raakt geen functionele code aan. Je website blijft exact hetzelfde werken.
Blijft dit werken na WordPress updates?
Ja, mu-plugins worden niet aangeraakt door WordPress updates. Het bestand blijft actief en functioneel na elke core update.
Kan ik dit combineren met security plugins?
Ja, dit script is compatibel met alle bekende security plugins. Het kan wel zijn dat sommige functies overlappen - in dat geval kun je delen uitschakelen.
Waarom een mu-plugin in plaats van een gewone plugin?
mu-plugins zijn altijd actief en kunnen niet per ongeluk worden uitgeschakeld. Ze laden ook voor gewone plugins, wat belangrijk is voor beveiliging.
Schaadt dit mijn caching?
Het verwijderen van ?ver= parameters kan de browser caching juist verbeteren. Bestanden worden nu gecached op basis van hun pad. Zorg wel dat je een goede cache-busting strategie hebt bij updates.
Conclusie
Met deze mu-plugin verwijder je alle publieke WordPress fingerprints zonder risico's. Het script:
- Verwijdert generator tags uit HTML, RSS en XHTML
- Stripted versienummers uit scripts en stylesheets
- Verwijdert versie-info uit de REST API
- Schakelt onnodige emoji en oEmbed scripts uit
- Raakt geen core bestanden aan
Dit is een essentieel onderdeel van WordPress hardening. Combineer het met onze andere beveiligingsmaatregelen voor maximale bescherming.
Professionele WordPress Beveiliging
Wil je al deze beveiligingsmaatregelen professioneel laten implementeren?