Chciałbym zacząć korzystać z WordPress REST API v2 do wyszukiwania informacji z mojej witryny. Zauważyłem, że kiedy odwiedzam bezpośrednio punkt końcowy, widzę wszystkie dane publicznie. Widziałem również, że wiele samouczków wspomina o użyciu serwerów testowych lub lokalnych zamiast o witrynach na żywo.
Moje pytania to:
- Czy to ma być stosowane na stronach w produkcji?
- Czy istnieje ryzyko związane z bezpieczeństwem zezwalające na wyświetlanie punktów końcowych przez kogokolwiek, na przykład przez
/wp-json/wp/v2/users/
które wyświetlają się wszyscy użytkownicy zarejestrowani w witrynie? - Czy można zezwolić tylko autoryzowanym użytkownikom na dostęp do punktu końcowego?
Chcę się upewnić, że przestrzegam najlepszych praktyk dotyczących bezpieczeństwa, więc wszelkie wskazówki byłyby pomocne. Dokumenty API wspominają o uwierzytelnianiu, ale nie jestem pewien, jak uniemożliwić bezpośredni dostęp do adresu URL. W jaki sposób inni zazwyczaj konfigurują dostęp do tych danych przez aplikacje zewnętrzne bez ujawniania zbyt dużej ilości informacji?
Odpowiedzi:
Tak. Wiele stron już z niego korzysta .
Nie. Odpowiedzi serwera nie mają nic wspólnego z bezpieczeństwem. Co możesz zrobić z pustym ekranem / dostępem tylko do odczytu? Nic!
Jeśli jednak witryny dopuszczają słabe hasła, występują pewne problemy . Ale to polityka twoich witryn, API REST nic o tym nie wie.
Tak. Możesz to zrobić za pomocą wywołania zwrotnego uprawnień .
Na przykład:
Trudno odpowiedzieć na to pytanie, ponieważ nie wiemy, co / kiedy jest za dużo informacji . Ale wszyscy używamy referencji i ściągów .
źródło
/wp-json/wp/v2/users/
. (Odnośnik wordpress.stackexchange.com/q/252328/41488 @JHoffmann komentarz)Możliwe jest dodanie niestandardowego wywołania zwrotnego uprawnień do punktu końcowego interfejsu API, który wymaga uwierzytelnienia w celu wyświetlenia zawartości. Nieautoryzowani użytkownicy otrzymają odpowiedź na błąd
"code": "rest_forbidden"
Najprostszym sposobem na to jest rozszerzenie WP_REST_Posts_Controller. Oto bardzo prosty przykład:
Zauważysz, że funkcja zwrotna uprawnień
function get_items_permissions_check
używacurrent_user_can
do ustalenia, czy zezwolić na dostęp. W zależności od sposobu korzystania z interfejsu API może być konieczne uzyskanie dodatkowych informacji na temat uwierzytelniania klienta.Następnie możesz zarejestrować swój niestandardowy typ postu za pomocą interfejsu API REST, dodając następujące argumenty
register_post_type
Zobaczysz
rest_controller_class
zastosowaniaMy_Private_Posts_Controller
zamiast domyślnego kontrolera.Trudno mi znaleźć dobre przykłady i wyjaśnienia dotyczące używania interfejsu API REST poza dokumentacją . Znalazłem to świetne wyjaśnienie rozszerzenia domyślnego kontrolera , a oto bardzo dokładny przewodnik po dodawaniu punktów końcowych .
źródło
Oto, czego użyłem, aby w ogóle zablokować wszystkim niezalogowanym użytkownikom korzystanie z interfejsu API REST:
źródło
źródło