Glossário
O que é o .env — o que acontece quando um arquivo de ambiente vaza
O .env reúne os segredos de um aplicativo (credenciais de banco, chaves de API, chaves de criptografia) em um único arquivo. Por que ele é o arquivo mais perigoso, o que cada segredo vazado destrava, onde colocá-lo e como protegê-lo no git e via rotação — com uma autoverificação.
O .env é extremamente prático e quase todo framework moderno o usa. Mas coloque-o no lugar errado uma única vez e é como prender seu molho de chaves na porta da frente. Veja o que ele é e como protegê-lo, do zero.
Um pouco mais de detalhe
Os aplicativos têm "valores que mudam por ambiente" e "valores que você não quer que ninguém veja": a senha do banco, chaves de API externas, a chave que criptografa as sessões. Codifique-os direto no fonte e os segredos vazam no instante em que você compartilha o código.
Então você os reúne em um único arquivo .env e os lê como "variáveis de ambiente" a partir do código. Next.js, Laravel, Rails e muitos frameworks funcionam assim.
Por que ele é o "arquivo mais perigoso"
Como várias chaves ficam em um único arquivo, uma única exposição espalha o dano rápido. Listar "o que cada valor vazado destrava" deixa a severidade clara.
| Valor vazado | O que acontece |
|---|---|
| Credenciais do banco | ler / alterar / apagar dados |
| Chaves de API externa | uso por personificação, cobrança fraudulenta |
Chave de criptografia (por exemplo, APP_KEY do Laravel, chaves de assinatura) | falsificação de sessão, login por personificação |
| Segredos OAuth | tomada de controle de apps vinculados |
De fato, expor o .env é um incidente clássico. → O .env exposto ao mundo inteiro
O vazamento típico = um erro de posicionamento
A maior causa é "colocar o aplicativo inteiro no diretório público (docroot)". Onde só public/ deveria ser servido, expor o diretório pai torna o .env alcançável também.
✗ Perigoso (app na raiz pública)
public_html/ ├─ .env ← legível! ├─ app/ └─ public/
✓ Seguro (app fora, só public servido)
app-root/ ├─ .env ← inalcançável ├─ app/ └─ public_html/ → public/
Como protegê-lo
Não o coloque em um diretório público
Mantenha o app fora do docroot; sirva apenas public/. Passos concretos para hospedagem compartilhada: este guia.
Não o commit no git
Adicione .env* ao .gitignore e compartilhe apenas um .env.example com valores vazios.
Gire tudo se ele vazar
Não apenas a chave confirmada — substitua todas as chaves que estavam no .env. Aja como se todas tivessem sido vistas.
Faça autoverificação regularmente
Crie o hábito de verificar que /.env não pode ser aberto no seu próprio site.
Autoverificação (apenas contra domínios que você possui)
# Um 200 com corpo significa que está exposto. 403/404 está ok por enquanto.
curl -sI https://yourdomain/.env | head -1
curl -sI https://yourdomain/.git/config | head -1Verificar isso a cada deploy detecta erros de posicionamento cedo.
Leia a seguir
FAQ
QPosso commitar o .env no git?
Não. Adicione o .env ao .gitignore. Em vez disso, commit um .env.example com valores vazios para compartilhar quais chaves são necessárias.
QSe até mesmo um segredo vazar do .env, o que eu giro?
Não apenas o que você confirmou — gire todas as chaves que estavam no .env. Prioridade: segredos de API externa / OAuth → chaves de criptografia → e-mail → banco. Aja como se todas tivessem sido vistas.
QComo verifico se o .env vazou?
Abra https://seudominio/.env num navegador. Se o conteúdo aparecer, está exposto (200 com corpo = ruim). Se estiver bloqueado (403/404), você está bem por enquanto.