Ich möchte die WordPress REST API v2 zum Abfragen von Informationen von meiner Site verwenden. Ich habe festgestellt, dass ich beim direkten Aufrufen einer Endpunkt-URL alle Daten öffentlich sehen kann. Ich habe auch gesehen, dass in vielen Tutorials die Verwendung von Test- oder lokalen Servern anstelle von Live-Sites erwähnt wird.
Meine Fragen sind:
- Soll dies an Standorten in der Produktion eingesetzt werden?
- Besteht ein Sicherheitsrisiko darin, dass Endpunkte von jedermann angezeigt werden, z. B., wenn
/wp-json/wp/v2/users/
alle auf der Site registrierten Benutzer angezeigt werden ? - Ist es möglich, nur autorisierten Benutzern den Zugriff auf einen Endpunkt zu erlauben?
Ich möchte sicherstellen, dass ich die Best Practices in Bezug auf die Sicherheit befolge. Daher sind Tipps hilfreich. Die API-Dokumente erwähnen die Authentifizierung, aber ich bin nicht sicher, wie ich den direkten Zugriff auf die URL verhindern soll. Wie richten andere Benutzer diese Daten für den Zugriff durch externe Anwendungen ein, ohne zu viele Informationen preiszugeben?
Antworten:
Ja. Viele Websites haben es bereits verwendet .
Nein. Die Antworten des Servers haben nichts mit Sicherheit zu tun. Was können Sie mit einem leeren Bildschirm / Nur-Lese-Zugriff tun? Nichts!
Wenn Ihre Websites jedoch schwache Kennwörter zulassen, treten einige Probleme auf . Die REST-API weiß nichts darüber.
Ja. Sie können dies mithilfe des Berechtigungsrückrufs tun .
Beispielsweise:
Diese Frage ist schwer zu beantworten, da wir nicht wissen, wann und wie viele Informationen vorliegen . Aber wir verwenden alle Referenzen und Cheatsheets .
quelle
/wp-json/wp/v2/users/
. (Referenz wordpress.stackexchange.com/q/252328/41488 @JHoffmann Kommentar)Es ist möglich, Ihrem API-Endpunkt einen benutzerdefinierten Berechtigungsrückruf hinzuzufügen, für den eine Authentifizierung erforderlich ist, um den Inhalt anzuzeigen. Nicht autorisierte Benutzer erhalten eine Fehlerantwort
"code": "rest_forbidden"
Am einfachsten ist es, den WP_REST_Posts_Controller zu erweitern. Hier ist ein sehr einfaches Beispiel dafür:
Sie werden feststellen, dass der Berechtigungsrückruf
function get_items_permissions_check
verwendet wirdcurrent_user_can
, um zu bestimmen, ob der Zugriff zugelassen werden soll. Je nachdem, wie Sie die API verwenden, müssen Sie möglicherweise mehr über die Clientauthentifizierung erfahren.Anschließend können Sie Ihren benutzerdefinierten Beitragstyp bei der REST-API-Unterstützung registrieren, indem Sie die folgenden Argumente in hinzufügen
register_post_type
Sie werden sehen ,
rest_controller_class
AnwendungenMy_Private_Posts_Controller
anstelle der Standard - Controller.Ich fand es schwierig, gute Beispiele und Erklärungen für die Verwendung der REST-API außerhalb der Dokumentation zu finden . Ich fand diese großartige Erklärung für die Erweiterung des Standard-Controllers und hier ist eine sehr gründliche Anleitung zum Hinzufügen von Endpunkten .
quelle
Ich habe Folgendes verwendet, um zu verhindern, dass alle nicht angemeldeten Benutzer die REST-API verwenden:
quelle
quelle