Die WordPress REST API kann sensible Informationen wie Benutzernamen offenlegen. Diese Anleitung zeigt, wie du sie für nicht-authentifizierte Nutzer einschränkst, während sie für den WordPress-Admin und Gutenberg-Editor funktional bleibt.
Methode 1: Authentifizierung für alle REST-API-Anfragen erfordern
Füge dies in die functions.php deines Themes oder ein benutzerdefiniertes Plugin ein:
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',
'Du bist nicht eingeloggt.',
array('status' => 401)
);
}
return $result;
});
Dies blockiert den gesamten REST-API-Zugang für nicht eingeloggte Nutzer. Gutenberg und Admin-Funktionen funktionieren weiterhin normal.
Methode 2: Nur Benutzer-Enumeration deaktivieren
Wenn du die REST API zugänglich lassen, aber die Benutzer-Enumeration verhindern möchtest:
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[\d]+)']);
}
return $endpoints;
});
Methode 3: REST-API-Link aus dem HTML entfernen
remove_action('wp_head', 'rest_output_link_wp_head');
remove_action('xmlrpc_rpc_methods', 'rest_output_link_wp_head');
remove_action('template_redirect', 'rest_output_link_header', 11);
Mit InspectWP überprüfen
Nach der Implementierung führe einen neuen InspectWP-Scan durch. Der REST-API-Bereich sollte deine Änderungen widerspiegeln.