Una API expone funciones y datos a programas. Mal protegida, puede filtrar información, aceptar acciones no autorizadas o colapsar bajo una avalancha de solicitudes.
Estas prácticas son válidas sea cual sea el lenguaje utilizado.
Comprobar quién llama, y qué tiene derecho a hacer
Autenticación Y autorización. En cada solicitud: identificar al que llama (token), y después verificar sus derechos sobre el recurso concreto al que accede. No suponer nunca que un usuario autenticado tiene derecho a hacerlo todo ni a ver los datos de otro.
No creerse nada de lo que entra
Validación estricta. Controlar tipo, formato, tamaño y límites de cada parámetro. Rechazar por defecto. Desconfiar de los identificadores pasados por el cliente: así se cuela el acceso directo a un objeto ajeno.
Aguantar la carga
Límite de tasa y cuotas. Limitar el número de solicitudes por cliente, por clave y por ruta. Prever cuotas y un comportamiento limpio en caso de superarlas, para resistir abusos y picos de tráfico.
Proteger el transporte y los secretos
- HTTPS obligatorio, versiones de TLS actualizadas.
- Claves y secretos fuera del código y del repositorio, en una bóveda o variables de entorno.
- Rotación de secretos y posibilidad de revocarlos.
Ver, versionar, reducir
- Registrar accesos y errores, vigilar anomalías, exportar a un SIEM.
- Versionar la API para que evolucione sin romperse, y retirar las versiones antiguas.
- Exponer solo los endpoints necesarios; mantener las dependencias al día; probar regularmente (revisión, escaneo).
Preguntas frecuentes
¿Basta una clave de API para asegurar el acceso?
No. Una clave identifica, pero no autoriza de forma precisa y puede ser robada. Hacen falta autenticación, autorización por recurso y límite de tasa.
¿Hay que mostrar mensajes de error detallados?
No en producción: informan al atacante. Mensaje genérico en el cliente, detalle en los registros del servidor.
¿Cómo evitar el acceso directo a un objeto ajeno?
Verificar siempre que quien llama tiene derecho sobre el identificador solicitado; no confiar nunca en un identificador proporcionado sin control.
Réagissez
Commentaires