Cloudflare WAF (Web Application Firewall) acționează ca un filtru între internet și serverul dumneavoastră WordPress,…

Cum dezactivați funcțiile WordPress care vă pun în pericol
Cum dezactivați funcțiile WordPress care vă pun în pericol. WordPress vine cu funcționalități activate implicit care au fost create pentru comoditate, dar care în practică sunt exploatate de atacatori pentru a compromite site-urile. Dezactivarea acestora reduce semnificativ suprafața de atac.
Multe dintre aceste funcții nu sunt necesare pentru funcționarea normală a site-ului dumneavoastră. Dezactivarea lor se face simplu prin configurări sau cod, fără a afecta experiența vizitatorilor.
Cum dezactivați funcțiile WordPress care vă pun în pericol
WordPress a fost creat inițial ca platformă de blogging și a păstrat funcționalități din acea eră care nu mai sunt relevante sau necesare pentru majoritatea site-urilor moderne. Fiecare funcționalitate activă care nu este utilizată reprezintă un vector potențial de atac.
Vom parcurge fiecare funcționalitate problematică, vom explica riscul asociat și vom prezenta metoda de dezactivare.
Dezactivarea XML-RPC
XML-RPC este un protocol vechi care permite aplicațiilor externe să comunice cu WordPress. Atacatorii îl folosesc pentru atacuri brute force amplificate (system.multicall) și atacuri DDoS (pingback).
Dacă nu folosiți aplicația mobilă WordPress sau servicii care necesită XML-RPC, dezactivarea este recomandată.
// Dezactivare XML-RPC prin functions.php sau plugin custom
add_filter('xmlrpc_enabled', '__return_false');
// Eliminare link XML-RPC din header-ul HTML
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wlwmanifest_link');
// Blocare completă prin .htaccess
// Adăugați în fișierul .htaccess principal:
// <Files xmlrpc.php>
// Order Deny,Allow
// Deny from all
// </Files>- XML-RPC permite testarea a sute de parole într-o singură cerere HTTP
- Funcția pingback din XML-RPC poate fi folosită pentru atacuri DDoS
- Blocarea la nivel de .htaccess este mai eficientă decât dezactivarea din PHP
- Verificați că aplicația mobilă WordPress nu mai este utilizată înainte de dezactivare
Restricționarea REST API
WordPress REST API expune informații despre structura site-ului, utilizatori și conținut. Endpoint-ul /wp-json/wp/v2/users listează toți utilizatorii WordPress cu numele lor de autentificare.
// Restricționare REST API doar pentru utilizatorii autentificați
add_filter('rest_authentication_errors', function($result) {
if (true === $result || is_wp_error($result)) {
return $result;
}
if (!is_user_logged_in()) {
return new WP_Error(
'rest_not_logged_in',
'REST API restricționat.',
array('status' => 401)
);
}
return $result;
});
// Alternativ: dezactivare doar endpoint-ul users
add_filter('rest_endpoints', function($endpoints) {
if (isset($endpoints['/wp/v2/users'])) {
unset($endpoints['/wp/v2/users']);
}
if (isset($endpoints['/wp/v2/users/(?P<id>[d]+)'])) {
unset($endpoints['/wp/v2/users/(?P<id>[d]+)']);
}
return $endpoints;
});
// Eliminare link REST API din header
remove_action('wp_head', 'rest_output_link_wp_head');
remove_action('wp_head', 'wp_oembed_add_discovery_links');
remove_action('template_redirect', 'rest_output_link_header', 11);- REST API este folosit de editorul Gutenberg, nu îl dezactivați complet dacă folosiți block editor
- Dezactivarea doar pentru utilizatorii neautentificați este cea mai sigură abordare
- Endpoint-ul /users expune numelor de utilizator, informație critică pentru atacuri brute force
- Plugin-urile pot adăuga endpoint-uri REST API proprii cu vulnerabilități
Dezactivarea enumerării utilizatorilor
WordPress permite descoperirea numelor de utilizator prin mai multe metode. Atacatorii folosesc aceste informații pentru atacuri brute force țintite.
// Blocare enumerare prin ?author=1
add_action('init', function() {
if (isset($_GET['author']) && !is_admin()) {
wp_redirect(home_url(), 301);
exit;
}
});
// Blocare enumerare prin REST API (deja acoperit mai sus)
// Blocare enumerare prin feed
add_filter('the_author', function($author) {
if (!is_admin()) {
return 'Admin';
}
return $author;
});
// Ascundere username din clasa body
add_filter('body_class', function($classes) {
return array_filter($classes, function($class) {
return strpos($class, 'author-') !== 0;
});
});- Accesarea ?author=1 redirecționează către /author/username/ expunând numele de utilizator
- Blocați redirecționarea author pentru vizitatori neautentificați
- Folosiți un nume de afișare (display name) diferit de numele de autentificare
- Clasa CSS author-username din body tag expune informația și ea
Dezactivarea editării de fișiere și funcțiilor periculoase
// Adăugare în wp-config.php
// Dezactivare editor fișiere teme/plugin-uri
define('DISALLOW_FILE_EDIT', true);
// Dezactivare instalare/actualizare din interfață (folosiți WP-CLI)
define('DISALLOW_FILE_MODS', true);
// Forțare SSL pe admin
define('FORCE_SSL_ADMIN', true);
// Dezactivare concatenare scripturi admin (previne atacuri DoS)
define('CONCATENATE_SCRIPTS', false);
// Limitare revizuiri postări (reduce dimensiunea bazei de date)
define('WP_POST_REVISIONS', 5);
// Dezactivare cron WordPress (folosiți cron real)
define('DISABLE_WP_CRON', true);
// Adăugați în crontab: */15 * * * * wget -q -O - https://www.wpsecurity.ro/wp-cron.php?doing_wp_cron- Editorul de fișiere permite modificarea codului PHP direct din browser, risc major
- DISALLOW_FILE_MODS previne și instalarea de plugin-uri malițioase dintr-un cont compromis
- WP-Cron activat prin vizite poate fi exploatat pentru atacuri de timing
- Cron-ul real al serverului este mai fiabil și nu depinde de traficul site-ului
Eliminarea informațiilor expuse
// Eliminare versiunea WordPress din HTML și feed-uri
remove_action('wp_head', 'wp_generator');
add_filter('the_generator', '__return_empty_string');
// Eliminare versiunea din scripturi și stiluri CSS
add_filter('style_loader_src', function($src) {
return remove_query_arg('ver', $src);
});
add_filter('script_loader_src', function($src) {
return remove_query_arg('ver', $src);
});
// Eliminare Windows Live Writer link
remove_action('wp_head', 'wlwmanifest_link');
// Eliminare shortlink
remove_action('wp_head', 'wp_shortlink_wp_head');
// Eliminare emoji (reduce cereri externe)
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles');
remove_action('admin_print_scripts', 'print_emoji_detection_script');
remove_action('admin_print_styles', 'print_emoji_styles');- Versiunea WordPress în codul sursă permite atacatorilor să identifice vulnerabilități specifice
- Versiunile scripturilor pot fi folosite pentru fingerprinting
- Emoji-urile WordPress adaugă cereri externe inutile către cdn.jsdelivr.net
- Fiecare informație eliminată face procesul de recunoaștere al atacatorului mai dificil
Dezactivarea pingbacks și trackbacks
// Dezactivare pingbacks
add_filter('xmlrpc_methods', function($methods) {
unset($methods['pingback.ping']);
unset($methods['pingback.extensions.getPingbacks']);
return $methods;
});
// Dezactivare self-pingbacks
add_action('pre_ping', function(&$links) {
$home = get_option('home');
foreach ($links as $l => $link) {
if (strpos($link, $home) === 0) {
unset($links[$l]);
}
}
});
// Prin WP-CLI - dezactivare completă pingbacks
// wp option update default_pingback_flag 0
// wp option update default_ping_status closed- Pingback-urile pot fi folosite pentru atacuri DDoS (WordPress Pingback DDoS)
- Self-pingback-urile generează notificări inutile când linkuiți propriul conținut
- Trackback-urile sunt surse majore de spam și nu mai au utilitate practică
- Dezactivarea din setările WordPress (Settings > Discussion) nu este suficientă
Dezactivarea funcțiilor inutile WordPress reduce semnificativ riscul de compromitere. Vizitați securitate cibernetică pentru ghiduri suplimentare sau blogul nostru. Echipa WPSecurity oferă servicii speciale de hardening WordPress, contactați-ne pentru audit complet.
Despre autor
Dorel Tănase este specialist în optimizarea site-urilor pentru motoarele de căutare. Lucrează în online din 1997 și în SEO din 2007, iar activitatea se desfășoară prin GO SEO MARKETING S.R.L. din Alba Iulia. Se ocupă de audit tehnic, arhitectura site-urilor, conținut și construirea legăturilor.