Cadena de Conexión con Contraseña Inline
Una cadena de conexión a base de datos con contraseña en texto plano está hardcodeada en tu código fuente, comprometiendo tus credenciales de base de datos en el control de versiones.
Cómo Funciona
Una cadena de conexión como postgresql://myuser:mypassword@prod-db.example.com/appdb parece conveniente para hardcodear, pero en el momento en que toca tu historial de git queda comprometida para siempre — incluso si borras la línea después. Herramientas automatizadas escanean GitHub en busca de patrones como postgresql:// y mysql:// con contraseñas continuamente. Un commit público expone toda tu base de datos.
// MAL: cadena de conexión completa con contraseña hardcodeada en el código
const pool = new Pool({
connectionString: 'postgresql://appuser:Sup3rS3cr3t!@prod-db.rds.amazonaws.com/myapp'
});// BIEN: cadena de conexión almacenada en variable de entorno
const pool = new Pool({
connectionString: process.env.DATABASE_URL
// DATABASE_URL=postgresql://appuser:password@host/db (en .env, nunca commiteado)
});Ejemplo Real
Escáneres automatizados como TruffleHog y Gitleaks escanean repositorios públicos de GitHub 24/7 y encuentran credenciales de base de datos hardcodeadas en minutos. En 2024, investigadores encontraron más de 100,000 cadenas de conexión válidas en repos públicos de GitHub — la mayoría seguían activas.
Cómo Prevenirlo
- Mueve todas las cadenas de conexión a variables de entorno inmediatamente y agrégalas a .env (que está en .gitignore)
- Si las credenciales alguna vez fueron commiteadas, rótalas ahora — el historial de git es permanente y la contraseña filtrada no sirve de nada una vez rotada
- Usa git-secrets o gitleaks como pre-commit hook para prevenir que las credenciales sean commiteadas
- Audita tu historial completo de git con: git log -S 'postgresql://' para encontrar fugas pasadas
- Usa un gestor de secretos para producción — nunca archivos .env en entornos de producción
Tecnologías Afectadas
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Conexión a Base de Datos Sin Cifrado
highTu conexión a la base de datos no usa SSL/TLS, lo que significa que todas las consultas y resultados viajan por la red en texto plano y pueden ser interceptados.
Base de Datos Accesible Públicamente
criticalTu base de datos está vinculada a 0.0.0.0 o expuesta en una IP pública sin VPC o firewall, haciéndola directamente accesible desde internet.
Credenciales de Base de Datos por Defecto
criticalTu base de datos usa credenciales predeterminadas de fábrica como postgres:postgres, root:root o admin:admin — lo primero que prueba cualquier atacante.
MongoDB Sin Autenticación
criticalTu conexión a MongoDB no tiene credenciales de autenticación, permitiendo que cualquiera que pueda alcanzar el puerto de la base de datos lea, modifique o borre todos los datos.