Construí una micro API usando Lumen que solo tiene un método GET singular, que devuelve datos JSON de una base de datos.
Agregué un middleware simple que obliga a la solicitud GET a tener "? Key = [secretPassword]" en la URL para que solo las personas que le dé la clave puedan realizar el GET.
Esta es mi primera API, ¿son suficientes medidas de seguridad?
Edite con más información: los datos no son confidenciales y no me importaría si la gente los encontrara, pero voy a mover la clave a los encabezados para una protección adicional, y estoy usando HTTPS.
3 respuestas
Agregué un middleware simple que obliga a la solicitud GET a tener "? Key = [secretPassword]" en la URL para que solo las personas que le dé la clave puedan realizar el GET.
Es difícil dar una respuesta completa, porque hay algunas incógnitas, pero lo estoy probando.
Algunas notas sobre este enfoque:
- En general, no se recomienda poner secretos en una URL, porque las URL terminan en cachés y registros.
- Definitivamente necesitas HTTPS. Sin HTTPS, otros pueden escuchar las solicitudes y respuestas HTTP.
- ¿Cómo vas a llevar esta clave a tus usuarios finales? ¿Tiene alguna forma segura de enviárselos?
- ¿Cómo estás creando claves al azar? Hay muchas formas malas de hacer esto.
En el título también preguntas esto:
¿Hay alguna necesidad de autenticación para una API REST de acceso público?
Bueno ... ¿depende de lo que intentas protegerte? ¿Importa si alguien puede llamar a la API? Entonces probablemente no necesites autenticación.
Si no es demasiado elevado, puede colocar una puerta de enlace API (Kong, Tyk, ApiGee, etc., etc.) frente a su API, esto le dará la flexibilidad para manejar cualquier tipo de autenticación o, para el caso, aún más a tiempo .
Generalmente, dependiendo de la sensibilidad de la información o del caso de negocios, la API GET también se deja abierta a veces.
Tener la contraseña en la URL filtra la contraseña, incluso en el tráfico HTTPS. Utilice el encabezado de autorización en su lugar.
Nuevas preguntas
rest
REST (Representational State Transfer) es un estilo de arquitectura de software para sistemas hipermedia distribuidos como la World Wide Web. Ha aumentado su popularidad en relación con las arquitecturas RPC como SOAP debido al desacoplamiento intrínseco del cliente del servidor que proviene de tener una interfaz uniforme entre sistemas heterogéneos.