Codea Seguro Codea Seguro
Desarrollo Seguro Dificultad: intermedia

Seguridad en integraciones con APIs de LLM

Claves, costes, fuga de datos y abuso al conectar tu app a un modelo de lenguaje.

Conectar una app a una API de LLM (Claude, entre otras) añade riesgos operativos y de datos propios. Más allá de la inyección de prompts, hay que cuidar claves, costes, privacidad y abuso.

1. Protege la clave de API

La clave del proveedor es un secreto de alto valor: da acceso facturable a tu cuenta.

// MAL — la clave viaja al navegador y queda expuesta en el bundle
const res = await fetch('https://api.anthropic.com/v1/messages', {
  headers: { 'x-api-key': 'sk-ant-...' }, // Asi esta visible para cualquiera
});

// BIEN — la llamada sale desde tu backend; el cliente nunca ve la clave
// Cliente → tu backend (autenticado) → API del LLM

Nunca llames a la API del modelo directamente desde el frontend. Gestiona la clave como cualquier secreto y rótala.

2. Controla el gasto y el abuso

Un endpoint de LLM sin límites es una factura abierta y un vector de denial of wallet:

  • Aplica el principio de menor privilegio para realizar llamadas al LLM.
  • Rate limiting por usuario/IP y cuotas de uso.
  • Límites de max_tokens por petición y de longitud de entrada.
  • Alertas de coste y presupuestos en el panel del proveedor.
  • Autenticación obligatoria antes de llegar al modelo.
  • Autorización bien definida para el uso del modelo.

3. Cuida los datos que envías al contexto

Lo que mandas al prompt sale de tu perímetro. Minimiza:

  • No incluyas secretos, PII innecesaria ni datos de otros usuarios en el contexto.
  • Redacta o tokeniza datos sensibles antes de enviarlos.
  • Revisa la política de retención/entrenamiento del proveedor y usa modos no-training si aplica.
  • Aísla el contexto por usuario: nunca mezcles conversaciones o datos entre cuentas.

4. Valida y acota la salida

  • Trata la respuesta como no confiable (ver prompt injection): valídala contra un esquema.
  • Si usas function calling, aplica privilegio mínimo y confirma acciones sensibles.
  • Maneja fallos del proveedor (timeouts, 429, 5xx) sin filtrar detalles internos al usuario.

5. Observabilidad sin filtrar datos

Registra uso, latencia y errores para detectar abuso, pero no loguees prompts/respuestas con datos sensibles en claro (ver logging seguro).

Checklist rápida

  • Clave de API solo en el backend, nunca en el cliente; rotada y como secreto.
  • Rate limiting, cuotas y límites de tokens por petición.
  • Autenticación previa y alertas de coste configuradas.
  • Minimización y redacción de datos sensibles enviados al contexto.
  • Contexto aislado por usuario; política de retención del proveedor revisada.
  • Salida validada; logging de uso sin volcar datos sensibles.