Tworzysz stronę internetową i potrzebujesz pomocy?

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ą…

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}}
(!) Zgłoś błąd na stronie
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Kurs "WordPress: Pierwsze kroki" (bezpłatna lekcja)
Patryk
Tworzysz stronę internetową i potrzebujesz pomocy?