DanLevy.net

Protegiendo tus Tokens, Claves de API y Secretos

¿Público? ¿Privado? ¿Qué?

Hero image for Protegiendo tus Tokens, Claves de API y Secretos

¿Cuándo proteger tus tokens?

¡Asegurar las claves de API y tokens es criticamente importante!

¡Un solo error puede llevar a perder el control de tu servidor y datos ante hackers!

No debería ser tan difícil determinar si un token en particular debe ocultarse, ¡incluso basándose en documentación oficial!

A menudo empeora con la sopa de términos relacionados que encontrarás: tokens, claves, credenciales, secretos, privado y público.

Reformulemos esto como entre secreto y no-secreto.



🔒 Claves secretas

** ‼️ Importante:** Las claves secretas DEBEN ser ignoradas por Git Y omitirse en todo código del navegador. Cómo usar dotenv


¿Cómo sabes cuándo estás lidiando con una clave secreta?


👍 Regla general: los servidores que devuelven errores de CORS carecen de soporte para navegador. Esto indica fuertemente que DEBES usar un proxy para el servicio, tratándolo como si fuera secreto.

👍 Regla general: los servicios costosos deberían (casi) siempre usar proxy u ocultarse.

👍 Regla general: si realizas una operación de escritura (subida de archivos, inserción en base de datos), podrías estar lidiando con claves secretas.


Casos de uso y características: Claves secretas

Lista de verificación: Manejo de Secretos de Forma Segura

Resumen Rápido

Completa los siguientes pasos para eliminar secretos de tu código:

NO crees un archivo .env en servidores desplegados. Usa la herramienta de gestión de variables de entorno proporcionada por tu servicio de alojamiento (por ejemplo, Heroku, Netlify, AWS EC2): panel de control o línea de comandos.

Artículo Relacionado: Usando dotenv de forma segura en NodeJS


🌍 Claves no secretas

👍 Regla general: siempre que una clave deba enviarse al navegador en código o en línea (por ejemplo, a través de una etiqueta <script src="https://my-api/?apiKey=123-abc-456">), definitivamente es no-secreta. Un ejemplo común es Google Maps.


Casos de uso y características: Claves no secretas

✅ Manejo de no secretos:

¡Es seguro hardcodear claves no secretas (públicas)!

Gestiona esto más fácilmente a largo plazo con un config.js compartido para tu aplicación.

Ejemplo:

config.js
module.exports = {
googleMapsKey: '123-abc'
};
load-map.js
const config = require('./config.js');
const key = config.googleMapsKey;
const src = `//maps.googleapis.com/maps/api/js?key=${key}`;
// ...

Nota: Hay otros casos de uso para variables de entorno. Algunos que no cubrí: CI/CD/pruebas, feature flags y configuración de runtime para entornos especiales.