Odezwał się do mnie jeden z klientów, że „gdzieś tam przeczytał”, że w raz w WordPressem 4.7 pojawiła się nowa możliwość odczytywania nazw użytkowników z zewnątrz, czyli np. przez różnej maści (SPAM)boty.
Trochę prawdy w tym jest, ale od razu mogłem też uspokoić mojego rozmówcę – wszystko jest pod kontrolą…
Spis treści w artykule [rozwiń]
WordPress 4.7, Rest API i nowe endpoiny
Wraz z WordPressem 4.7 pojawiły się nowe endpointy (nie wiem jakie będzie dobry polski odpowiednik tej nazwy), a wśród nich ten odpowiedzialny za pobranie nazw użytkowników, wraz z kodami (sumami kontrolnymi) gravatarów, i to przez każdego zainteresowanego, bez potrzeby logowania czy jakiejkolwiek innej autoryzacji.
Wystarczy w pasku adresu wpisać adres wg schematu:
[ADRES_STRONY]/wp-json/wp/v2/users
Np.:
https://webinsider.pl/wp-json/wp/v2/users
W odpowiedzi uzyskamy coś w stylu:
[{"id":X,"name":"Patryk","url":"\/\/webinsider.pl","description":"","link":"https:\/\/webinsider.pl\/author\/patryk\/","slug":"patryk","avatar_urls":{"XY":"https:\/\/secure.gravatar.com\/avatar\/1234567890?s=XY&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/1234567890?s=XY&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/1234567890?s=96&r=g"},"meta":[],"_links":{"self":[{"href":"https:\/\/webinsider.pl\/wp-json\/wp\/v2\/users\/X"}],"collection":[{"href":"https:\/\/webinsider.pl\/wp-json\/wp\/v2\/users"}]}}]
Jak widać mamy tu nazwę wyświetlaną użytkownika, oraz jego ID. Na szczęście nie ma nazwy użytkownika, no chyba, że ktoś w obu przypadkach używa takiej samej nazwy. Ogólnie nie ma tu raczej danych, których nie dałoby się uzyskać w inny sposób, i zarazem takich, które narażałyby nas na jakieś (dodatkowe) niebezpieczeństwo…
Blokowanie
Ale jeśli ktoś z Was chciałby zablokować tego typu zapytania, to możecie w tym celu skorzystać np. z wtyczki Wordfence, gdzie w najnowszej wersji (6.2.8+) w standardzie pojawiła się również i blokada tego zapytania:
Prevent discovery of usernames through '/?author=N’ scans, the oEmbed API, and the WordPress REST API
W takim przypadku odpowiedź WordPressa będzie wyglądać np. tak:
{"code":"rest_user_cannot_view","message":"Przepraszamy, nie posiadasz uprawnienia do przegl\u0105dania u\u017cytkownik\u00f3w.","data":{"status":401}}
Można też dodać jedna linijkę kodu do pliku functions.php:
add_filter( 'rest_endpoints', '__return_empty_array' );
W takim przypadku odpowiedź WordPressa będzie wyglądać np. tak:
{"code":"rest_no_route","message":"Nie znaleziono \u017cadnej scie\u017cki pasuj\u0105cej do adresu URL oraz zapytania HTTP","data":{"status":404}}


- Wtyczka BackWPup w wersji 5.x to doskonały przykład, jak wylać dziecko z kąpielą i z relatywnie świetnego narzędzia zrobić właściwie bezwartościowego gniota - 1970-01-01
- Testowy przelew w Bitcoinach z najniższą prowizją, czyli krótka historia o tym, jak zamroziłem BTC na (ponad) rok - 1970-01-01
- Nowy system kopii zapasowych w Home Assistant 2025.1 to zapewne krok w dobrym kierunku, ale zdecydowanie przedwczesny - 1970-01-01
Heh, nowa dziura od twórców WP :)
Raczej to kolejny krok by WP jako CMSa otworzyć na zewnętrzne narzędzia, co jest dobrym kierunkiem. Opisany „problem” to raczej dla przewrażliwionych, bo na szczęście nie ma tam nazw użytkownika używanych do logowania (loginów), a tylko nazwy wyświetlane, które i tak są publicznie dostępne…