Claves de API y encabezados de autenticación
La mayoría de las APIs útiles no están abiertas al mundo. La empresa necesita saber quién está preguntando, para poder rastrear el uso y cobrarte. Te dan una clave de (API key): una cadena secreta larga que identifica tu cuenta. La adjuntas a cada solicitud, normalmente en un encabezado (HTTP header) llamado Authorization, como la línea Bearer sk_live_... de arriba.
Trata una clave de API exactamente como una contraseña, porque eso es lo que es. Cualquiera que la tenga puede hacer solicitudes como si fueras tú y disparar tu factura o leer tus datos. Esto se conecta directamente con el capítulo de seguridad, y hay una regla que importa más que ninguna otra:
- Nunca pongas una clave de API en código que se envía al navegador. Todo lo que está en tu es público: los usuarios pueden abrir las herramientas de desarrollo y leerlo. La IA, si le pides que "llame a la API desde la página", pegará alegremente tu clave secreta justo ahí. Detenla. Las claves secretas pertenecen al servidor.
- Nunca subas una clave a . Aunque la borres después, queda para siempre en el historial, y los bots escanean repositorios públicos buscando claves en cuestión de minutos.
- Guarda las claves en variables de entorno, no en el código mismo; el mismo patrón que cubre el capítulo de seguridad.
La clave debe viajar desde un lugar seguro, nunca desde el navegador. Imagina los dos caminos: uno seguro, uno una fuga:
SAFE ✓ LEAK ✗
┌──────────┐ key ┌──────────┐ ┌──────────┐ key ┌──────────┐
│ SERVER │ ─────▶ │ API │ │ BROWSER │ ────▶ │ API │
│ (your │ stays │ │ │ (anyone │ │ │
│ backend)│ hidden │ │ │ can │ │ │
└──────────┘ └──────────┘ │ read it)│ └──────────┘
key in env var └──────────┘
key in frontend = public
Si alguna vez ves una clave real en un diff, en un archivo del frontend o en un mensaje de chat, trátala como ya filtrada: rótala (genera una nueva, desactiva la antigua) de inmediato.