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_tokenspor 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.
- #llm
- #api
- #owasp-llm
- #ia