Abfrage der Benutzernamen mit „JSON-API“ verhindern

Wichtiger Hinweis:
Durch das Deaktivieren der REST-API sendet das bekannte Kontaktformular „Contact Form 7“ keine Daten mehr an die hinterlegte Mailadresse. Das Statistik-Plugin „Independent Analytics“ zählt ebenfalls keine Besucher mehr. Bei Verwendung der v. g. Plugins bietet sich die hier beschriebene Lösung an.


Auch über die „JSON-API“ kann man den Benutzernamen herausfinden und muss als Hacker nur noch das Passwort knacken.

Zum Testen auf diese Sicherheitslücke hängt man an die eigene Adresse „/wp-json/wp/v2/users“ hinten an und ruft die Seite auf.

Beispiel:

https://meine.domain.de/wp-json/wp/v2/users

Es wird dann z. B. folgendes (Auszug; fiktiver Username max12) angezeigt:

[{"id":1,"name":"max12","url":"","description":"","link":"https:\...

Am Besten ist der Einbau des folgenden PHP-Codes in ein Snippet-Plugin:

add_filter( 'rest_authentication_errors', function( $result ) {
   if ( ! empty( $result ) ) {
      return $result;
   }
   if ( ! is_user_logged_in() ) {
     return new WP_Error( '401', 'not allowed.', array('status' => 401) );
   }
   return $result;
});

 

Nach Löschen von WordPress-und Browsercache erfolgt eine erneute Abfrage wie oben geschildert. Wenn alles richtig ist, zeigt der Browser diese Textzeile an:

{"code":"nfw_rest_api_access_restricted","message":"Forbidden access","data":{"status":403}}