Secretos en el código — cómo no regalar las claves del servidor a los hackers
Publicado el 13.01.2026
Imagine la situación: trabajas en un proyecto genial toda la noche. A las 4 de la mañana todo está listo, haces un git push final y te vas a dormir tranquilo. Y por la mañana descubres que tu balance en AWS está a cero y que hay un minero corriendo en tus servidores. ¿Qué pasó? Resulta que en uno de los archivos dejaste la línea: AWS_ACCESS_KEY_ID = "AKIA...".
Es un error clásico por el que han pasado miles de desarrolladores. En este artículo veremos por qué «simplemente borrar la contraseña» no ayuda y cómo configurar una protección automática que físicamente te impedirá cometer el error.
¿Qué son los “secretos” y por qué son un problema?
En el mundo del desarrollo, los secretos son cualquier dato que da acceso a recursos protegidos:
- Contraseñas de bases de datos.
- Claves de API (Stripe, OpenAI, AWS, bots de Telegram).
- Claves SSH privadas.
- Tokens de autorización.
El problema principal: los desarrolladores a menudo tratan el código como un borrador. «Ahora pongo la clave aquí para comprobar si la integración funciona, y antes del deploy la moveré a variables de entorno».
Pero Git no funciona así.
El mito de borrar
Git es un sistema de control de versiones. Su tarea principal es recordar todo. Si hiciste commit de un archivo con la contraseña, y dos horas después lo borraste y hiciste otro commit, la contraseña no desapareció. Quedó en la historia. Cualquiera que clone tu repositorio puede retroceder al primer commit o simplemente mirar el git log y ver tu clave.
Los hackers no se sientan a revisar repositorios manualmente. Tienen bots-escrutadores que monitorean el flujo de commits públicos de GitHub 24/7. En cuanto una clave cae en la red, a menudo acaba en la base de datos del atacante en cuestión de minutos; a veces en 20–60 segundos.
Primera línea de defensa: el principio “no secretos en el código”
Antes de pasar a herramientas, hay que implantar una regla: el código debe ser público por defecto. Aunque estés desarrollando un proyecto privado, escríbelo como si mañana lo fueran a publicar en Open Source.
Uso de archivos .env
La forma más simple es guardar la configuración en un archivo .env que nunca entre en Git.
- Crea un archivo
.env. - Añade tus claves:
DB_PASSWORD=my_super_secret_password. - En el código usa librerías (por ejemplo,
dotenvpara JS/Python) para leer esos datos. - Muy importante: añade la línea
.enva tu.gitignore.
Automatización de la protección: introducción a los Git hooks
Somos humanos y nos equivocamos. Para excluir el factor humano, necesitamos robots que nos detengan antes de que se haga el commit. Para ello existen los Git Hooks (hooks de Git).
Los hooks son scripts que Git ejecuta automáticamente ante ciertos eventos (por ejemplo, antes del commit o antes del push).
Herramienta nº1: Gitleaks
Gitleaks es uno de los escáneres de secretos más populares y rápidos. Busca coincidencias usando una enorme base de patrones (formatos de claves de AWS, Google Cloud, Stripe, etc.).
Cómo funciona en la práctica
Instalación:
Si tienes Homebrew (macOS/Linux):
brew install gitleaks
O puedes descargar el binario desde GitHub (Releases) para Windows/Linux/macOS.
Verificación manual:
Puedes ejecutar una comprobación de todo el proyecto ahora mismo:
gitleaks detect --verbose
Si en la historia de tu proyecto hay claves olvidadas, Gitleaks las listará indicando las líneas y archivos concretos.
Herramienta nº2: pre-commit (framework para perezosos)
Para no ejecutar la comprobación manualmente cada vez, usamos el framework pre-commit. Automatiza la ejecución de Gitleaks en cada intento de hacer git commit.
Instrucciones de configuración
- Instala
pre-commit:
pip install pre-commit
En la raíz del proyecto crea el archivo
.pre-commit-config.yaml.Añade las siguientes líneas:
repos:
- repo: https://github.com/gitleaks/gitleaks
rev: v8.30.0 # Usa la versión más reciente
hooks:
- id: gitleaks
- Instala el hook en tu sistema:
pre-commit install
¿Qué pasará ahora? Cuando escribas git commit -m "added login logic", se ejecutará Gitleaks automáticamente. Si encuentra un secreto, interrumpirá el proceso de commit y mostrará un error. Simplemente no podrás commitear código peligroso. Esa es la idea de «seguridad por defecto».
¿Qué hacer si un secreto ya se filtró?
Si descubres que una clave se ha filtrado en un repositorio público, el procedimiento debe ser el siguiente:
- Revocar la clave (Revoke): esto es lo más importante. No intentes simplemente borrarla del Git. Asume que la contraseña ya la conocen. Ve al panel de control (AWS, Google, Telegram) y desactiva la clave. Crea una nueva.
- Limpiar la historia: si realmente necesitas eliminar rastros del repositorio, usa la herramienta BFG Repo-Cleaner o el comando integrado
git filter-repo. Un simplegit rmno ayudará. - Cambiar todos los accesos relacionados: si se filtró la contraseña de la BD, cámbiala en todos los lugares donde se usaba.
Resumen para principiantes
La lucha contra los secretos no es sobre algoritmos complejos, sino sobre disciplina y las herramientas adecuadas.
- Nunca escribas contraseñas directamente en el código.
- Usa
.envy.gitignore. - Configura Gitleaks mediante
pre-commituna vez, y te salvará la carrera (y el bolsillo) en el futuro.
Recuerda: en seguridad es mejor prevenir y dedicar 15 minutos a configurar hooks que pasar una semana recuperando una infraestructura comprometida.
Reseñas relacionadas
Hubo varios problemas, tanto en la parte técnica como en la comprensión general. Mijaíl respondió rápido a la solicitud, ayudó a aclarar las cosas y resolvió los problemas técnicos; por ello, muchas gracias. Estoy satisfecho con el resultado.
abazawolf · Configuración de VPS, configuración del servidor
18.02.2026 · ⭐ 5/5
Hubo varios problemas relacionados tanto con la parte técnica como con la comprensión en general. Mijaíl respondió rápidamente a la solicitud, ayudó a aclarar las cosas y resolvió los problemas técnicos, por lo que le doy las gracias por ello. Estoy satisfecho con el resultado.
Todo se hizo de manera rápida y precisa. Lo recomiendo.
Akelebra · Configuración de VPS, configuración del servidor
17.01.2026 · ⭐ 5/5
Todo se hizo rápido y con precisión. Lo recomiendo.
Todo salió bien, el profesional respondió rápidamente a las preguntas y ayudó a resolver el problema. ¡Gracias!
visupSTUDIO · Configuración de VPS, configuración del servidor
16.12.2025 · ⭐ 5/5
Todo fue bien, el profesional respondió rápidamente a las preguntas y ayudó a resolver el problema. ¡Gracias!
Lo hicieron todo con rapidez. Seguiremos acudiendo. ¡Lo recomiendo!
rotant · Configuración de VPS, configuración del servidor
10.12.2025 · ⭐ 5/5
Todo lo hicieron con rapidez. Seguiremos acudiendo. ¡Lo recomiendo!
Hicieron todo rápidamente. Mijaíl siempre está disponible. Seguiremos recurriendo a él.
samstiray · Configuración de VPS, configuración del servidor
10.12.2025 · ⭐ 5/5
Todo se hizo con rapidez. Михаил siempre está en contacto. Seguiremos recurriendo a él
¡Mijaíl es un profesional! Ya no es la primera vez que lo demuestra en la práctica.
Vadim_U · Configuración de VPS, configuración del servidor
Cliente acostumbrado03.12.2025 · ⭐ 5/5
Михаил, ¡un profesional! Ya lo ha demostrado en la práctica más de una vez.