Je voudrais commencer à utiliser l' API REST WordPress v2 pour interroger les informations de mon site. J'ai remarqué que lorsque je visite directement une URL de point de terminaison, je peux voir toutes les données publiquement. J'ai également vu que de nombreux tutoriels mentionnent l'utilisation de serveurs de test ou locaux plutôt que de sites en direct.
Mes questions sont:
- Est-ce destiné à être utilisé sur des sites en production?
- Existe-t-il un risque pour la sécurité d'autoriser la visualisation de points de terminaison par quiconque, par exemple,
/wp-json/wp/v2/users/
qui montre tous les utilisateurs enregistrés sur le site? - Est-il possible d'autoriser uniquement les utilisateurs autorisés à accéder à un point de terminaison?
Je veux m'assurer de suivre les meilleures pratiques en matière de sécurité, donc tous les conseils seraient utiles. Les documents de l'API mentionnent l'authentification, mais je ne sais pas comment empêcher l'accès direct à l'URL. Comment les autres configurent-ils généralement ces données pour qu'elles soient accessibles par des applications externes sans exposer trop d'informations?
Réponses:
Oui. De nombreux sites l'utilisent déjà .
Non. Les réponses du serveur n'ont rien à voir avec la sécurité, que pouvez-vous faire avec un écran vide / un accès en lecture seule? Rien!
Cependant, si vos sites autorisent des mots de passe faibles, il y a des problèmes . Mais c'est la politique de vos sites, l'API REST n'en sait rien.
Oui. Vous pouvez le faire en utilisant le rappel d'autorisation .
Par exemple:
Il est difficile de répondre à cette question parce que nous ne savons pas ce qui / quand est trop d'informations . Mais nous utilisons tous des références et des cheatsheets .
la source
/wp-json/wp/v2/users/
. (Référence wordpress.stackexchange.com/q/252328/41488 @JHoffmann comment)Il est possible d'ajouter un rappel d'autorisation personnalisé à votre point de terminaison API qui nécessite une authentification pour afficher le contenu. Les utilisateurs non autorisés recevront une réponse d'erreur
"code": "rest_forbidden"
La façon la plus simple de procéder consiste à étendre WP_REST_Posts_Controller. Voici un exemple très simple de cela:
Vous remarquerez que le rappel des autorisations
function get_items_permissions_check
utilisecurrent_user_can
pour déterminer s'il faut autoriser l'accès. Selon la façon dont vous utilisez l'API, vous devrez peut-être en savoir plus sur l'authentification client.Vous pouvez ensuite enregistrer votre type de publication personnalisé avec le support de l'API REST en ajoutant les arguments suivants dans
register_post_type
Vous verrez des
rest_controller_class
utilisationsMy_Private_Posts_Controller
au lieu du contrôleur par défaut.J'ai eu du mal à trouver de bons exemples et des explications pour utiliser l'API REST en dehors de la documentation . J'ai trouvé cette excellente explication de l'extension du contrôleur par défaut , et voici un guide très complet pour ajouter des points de terminaison .
la source
Voici ce que j'ai utilisé pour empêcher tous les utilisateurs non connectés d'utiliser l'API REST:
la source
la source