Saltar al contenido
>_ITDITDPlataforma de seguridad web

Glosario

Qué es .env: qué pasa cuando se filtra un archivo de entorno

.env reúne los secretos de una app (credenciales de BD, claves de API, claves de cifrado) en un solo archivo. Por qué es el archivo más peligroso, qué desbloquea cada secreto filtrado, dónde colocarlo y cómo protegerlo en git y mediante rotación, con una autocomprobación.

Publicado 2026-06-07 Actualizado 2026-06-07 3 min de lectura

.env es comodísimo y casi todos los frameworks modernos lo usan. Pero colócalo en el sitio equivocado una sola vez y es como clavar tu llavero en la puerta de entrada. Aquí tienes qué es y cómo protegerlo, desde cero.

Un poco más de detalle

Las apps tienen "valores que cambian por entorno" y "valores que no quieres que nadie vea": la contraseña de la BD, las claves de API externas, la clave que cifra las sesiones. Si las codificas a fuego en el código fuente, los secretos se filtran en el momento en que compartes el código.

Así que las reúnes en un único archivo .env y las lees como "variables de entorno" desde el código. Next.js, Laravel, Rails y muchos frameworks funcionan así.

Por qué es el "archivo más peligroso"

Porque varias claves están en un solo archivo, una única exposición propaga el daño rápido. Enumerar "qué desbloquea cada valor filtrado" deja clara la gravedad.

Valor filtradoQué pasa
Credenciales de BDleer / alterar / borrar datos
Claves de API externauso suplantando identidad, facturación fraudulenta
Clave de cifrado (p. ej. APP_KEY de Laravel, claves de firma)falsificación de sesiones, inicio de sesión suplantado
Secretos de OAuthsecuestro de las apps vinculadas

De hecho, exponer .env es un incidente clásico. → El .env expuesto a todo el mundo

La filtración típica = un error de colocación

La causa principal es "poner toda la app en el directorio público (docroot)". Donde solo debería servirse public/, exponer su carpeta superior hace que .env también sea alcanzable.

✗ Peligroso (la app en la raíz pública)

public_html/
├─ .env   ← ¡legible!
├─ app/
└─ public/

✓ Seguro (la app fuera, solo public servido)

app-root/
├─ .env   ← inalcanzable
├─ app/
└─ public_html/ → public/
Mantén la app fuera del docroot y sirve solo public/. Eso por sí solo hace inalcanzable el .env.

Cómo protegerlo

1

No lo pongas en un directorio público

Mantén la app fuera del docroot; sirve solo public/. Pasos concretos para hosting compartido: esta guía.

2

No lo subas a git

Añade .env* a .gitignore y comparte solo un .env.example con valores vacíos.

3

Rota todo si se filtra

No solo la clave confirmada: reemplaza todas las claves que estaban en .env. Actúa como si todas se hubieran visto.

4

Autocompruébalo con regularidad

Adquiere el hábito de comprobar que /.env no se puede abrir en tu propio sitio.

Autocomprobación (solo contra dominios que poseas)

# Un 200 con cuerpo significa que está expuesto. 403/404 está bien por ahora.
curl -sI https://tudominio/.env | head -1
curl -sI https://tudominio/.git/config | head -1

Comprobar esto en cada despliegue detecta los errores de colocación a tiempo.

Sigue leyendo

FAQ

Q¿Puedo subir .env a git?
A

No. Añade .env a .gitignore. En su lugar, sube un .env.example con valores vacíos para compartir qué claves hacen falta.

QSi se filtra aunque sea un secreto de .env, ¿qué roto?
A

No solo el que confirmaste: rota todas las claves que estaban en .env. Prioridad: secretos de API externa / OAuth → claves de cifrado → correo → BD. Actúa como si todas se hubieran visto.

Q¿Cómo compruebo si .env se filtró?
A

Abre https://tudominio/.env en un navegador. Si se muestra el contenido, está expuesto (200 con cuerpo = mal). Si está bloqueado (403/404), por ahora estás bien.