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.