Módulo Transversal — Segredos, credenciais e segurança 🟢
Objectivo: trabalhar como profissional — sem nunca expor chaves nem misturar contas. O momento aha: perceber que segurança não é um extra, é parte de escrever código. Resultado: um projecto com segredos bem geridos.
1. O que é um “segredo”
Qualquer chave, palavra-passe ou token que dá acesso a um serviço (API de pagamentos, base de dados, SMS). Se vaza, alguém pode gastar/roubar em teu nome.
2. Onde vivem os segredos
.env.local— segredos do projecto em desenvolvimento. Nunca vai para o GitHub.- Variáveis de ambiente na Vercel/servidor — os segredos de produção.
- Ficheiro central de tokens (fora de qualquer repositório) — chaves partilhadas entre projectos.
# .gitignore — garante que o .env nunca é commitado
.env.local
.env*.local
3. Regras que não se quebram
- Nunca commitar segredos. Se acontecer, roda a chave (gera nova) imediatamente.
- Nunca imprimir valores de chaves em logs.
- service_role / chaves secretas só no servidor — nunca no frontend.
- Não misturar contas — o que é teu/da empresa ≠ o que é do cliente.
4. Princípio do menor privilégio
Dá a cada chave só o acesso de que precisa. Uma chave “que faz tudo” é um risco maior se vazar.
✅ Exercícios
- .gitignore — confirma que o
.env.localestá ignorado (git statusnão o deve mostrar). - Caça ao segredo — procura no teu projecto se alguma chave está escrita no código; move-a para
.env.local. - Plano de fuga — descreve, em 3 passos, o que fazes se uma chave for commitada por engano.
Resultado esperado: um repositório onde nenhum segredo aparece no histórico.
⚠️ Erros comuns
- Commitar o
.env— se acontecer, roda a chave imediatamente. - Imprimir valores de chaves em logs — mostra só o nome +
<redacted>. service_roleno frontend — só no servidor, nunca no navegador.- A mesma chave “para tudo” — usa o mínimo de privilégio por chave.
📋 Checklist do módulo
-
.env.localno.gitignore - Nenhum segredo no código nem em logs
-
service_rolesó no servidor - Cada chave com o mínimo de acesso necessário