Me gustaría comenzar a usar WordPress REST API v2 para consultar información de mi sitio. Me di cuenta de que cuando visito una URL de punto final directamente, puedo ver todos los datos públicamente. También he visto que muchos tutoriales mencionan el uso de servidores de prueba o locales en lugar de sitios en vivo.
Mis preguntas son:
- ¿Está destinado a ser utilizado en sitios en producción?
- ¿Existe un riesgo de seguridad al permitir que cualquier persona pueda ver los puntos finales, como lo
/wp-json/wp/v2/users/
que muestra todos los usuarios registrados en el sitio? - ¿Es posible permitir que solo los usuarios autorizados accedan a un punto final?
Quiero asegurarme de seguir las mejores prácticas en materia de seguridad, por lo que cualquier consejo sería útil. Los documentos de la API mencionan la autenticación, pero no estoy seguro de cómo evitar que se acceda directamente a la URL. ¿Cómo suelen otros configurar esta información para que accedan las aplicaciones externas sin exponer demasiada información?
Respuestas:
Si. Muchos sitios ya lo han estado usando .
No. Las respuestas del servidor no tienen nada que ver con la seguridad, ¿qué puede hacer con una pantalla en blanco / acceso de solo lectura? ¡Nada!
Sin embargo, si sus sitios permiten contraseñas débiles, hay algunos problemas . Pero es la política de sus sitios, REST API no sabe nada al respecto.
Si. Puede hacerlo utilizando la devolución de llamada de permiso .
Por ejemplo:
Esta pregunta es difícil de responder porque no sabemos qué / cuándo es demasiada información . Pero todos estamos usando referencias y cheatsheets .
fuente
/wp-json/wp/v2/users/
. (Referencia wordpress.stackexchange.com/q/252328/41488 @JHoffmann comment)Es posible agregar una devolución de llamada de permiso personalizada a su punto final de API que requiere autenticación para ver el contenido. Los usuarios no autorizados recibirán una respuesta de error.
"code": "rest_forbidden"
La forma más sencilla de hacer esto es extender el WP_REST_Posts_Controller. Aquí hay un ejemplo muy simple de eso:
Notará que la devolución de llamada de permisos se
function get_items_permissions_check
utilizacurrent_user_can
para determinar si se debe permitir el acceso. Dependiendo de cómo esté utilizando la API, es posible que deba aprender más sobre la autenticación del cliente.A continuación, puede registrar su tipo de publicación personalizada con soporte de API REST agregando los siguientes argumentos en
register_post_type
Verá
rest_controller_class
usos enMy_Private_Posts_Controller
lugar del controlador predeterminado.Me ha resultado difícil encontrar buenos ejemplos y explicaciones para usar la API REST fuera de la documentación . Encontré esta gran explicación de extender el controlador predeterminado , y aquí hay una guía muy completa para agregar puntos finales .
fuente
Esto es lo que he usado para bloquear a todos los usuarios que no han iniciado sesión para que no utilicen la API REST:
fuente
fuente