Die WordPress REST API ist ein leistungsstarkes Feature, das die Kommunikation mit einer WordPress-Website über externe Anwendungen ermöglicht. Standardmäßig stellt sie jedoch auch sensible Endpunkte bereit, die unter Umständen nicht öffentlich zugänglich sein sollten. Einer dieser Endpunkte ist /wp-json/wp/v2/users, der eine Liste aller WordPress Benutzer zurückgibt – einschließlich ihrer Benutzernamen. Dies kann ein erhebliches Sicherheitsrisiko darstellen, da Angreifer durch eine einfache Abfrage Benutzernamen auslesen und für Brute-Force-Angriffe auf die Login-Seite verwenden können.
Inhaltsverzeichnis
Warum sollte der /users Endpunkt deaktiviert werden?
Die Veröffentlichung von Benutzernamen über die REST API ist in vielen Fällen nicht erwünscht. Besonders in Kombination mit schwachen Passwörtern oder fehlenden Login-Schutzmaßnahmen kann dies eine potenzielle Angriffsfläche eröffnen. Dennoch ist es nicht ratsam, die gesamte REST API zu deaktivieren, da sie von wichtigen Funktionen innerhalb von WordPress genutzt wird:
- Der Gutenberg-Editor ist von der REST API abhängig. Eine vollständige Deaktivierung könnte dazu führen, dass der Block-Editor nicht mehr funktioniert.
- Viele Plugins und Themes greifen auf die API zurück, um Inhalte zu laden oder zu aktualisieren.
- Mobile Apps und externe Tools nutzen die REST API zur Verwaltung von Inhalten.
Aus diesen Gründen sollte nur der /wp-json/wp/v2/users Endpunkt deaktiviert werden, während die REST API weiterhin aktiv bleibt.
Code-Snippet zur Deaktivierung des /users Endpunkts
Die folgende Code-Erweiterung entfernt den Zugriff auf den Nutzer-Endpunkt, ohne andere REST API-Funktionen einzuschränken. Dieser Code kann in die functions.php des Themes oder in ein eigenes Plugin eingefügt werden:
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;
});
Fazit
Das Deaktivieren des /wp-json/wp/v2/users Endpunkts ist eine einfache, aber effektive Maßnahme zur Verbesserung der WordPress-Sicherheit. Es verhindert, dass Benutzernamen öffentlich auslesbar sind, während die REST API für andere wichtige Funktionen erhalten bleibt. Wer WordPress sicherer machen möchte, sollte diesen Code ergänzen und zusätzlich weitere Schutzmaßnahmen wie eine Zwei-Faktor-Authentifizierung und ein Login-Schutz-Plugin in Betracht ziehen.