Segredos e chaves de API: a armadilha da chave exposta
Um segredo é qualquer coisa que concede acesso: chaves de (Application Programming Interface), senhas de banco de dados, tokens de provedores de pagamento, chaves de assinatura. O erro mais comum — e mais caro — do vibe coding é vazar um deles.
Duas armadilhas pegam gente o tempo todo:
- Segredos no código do cliente. Qualquer coisa no seu (o JavaScript que roda no navegador) é pública. Usuários podem abrir as ferramentas de desenvolvedor e ler isso. A IA, ao ser pedida para chamar uma API a partir de um componente React, vai colar sua chave secreta ali mesmo, feliz da vida — e agora qualquer pessoa que visite seu site pode copiá-la e inflar sua conta. Chaves secretas pertencem ao servidor, nunca ao código que vai para o navegador.
- Segredos no repositório. Uma chave fixada em um arquivo é enviada para o . Mesmo que você a apague depois, ela vive para sempre no histórico do git, e bots vasculham repositórios públicos exatamente atrás disso minutos depois de um push.
O lar correto de um segredo é uma variável de ambiente — um valor fornecido ao app em tempo de execução, mantido totalmente fora do código:
// VULNERÁVEL: a chave está no código-fonte, será enviada ao git
const stripe = new Stripe("sk_live_51H8xQ2eZvK...");
// SEGURO: a chave é lida do ambiente, nunca escrita no código
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);
Um segredo tem exatamente um lar seguro — no servidor, lido do ambiente. O navegador é um lugar público: qualquer coisa enviada para lá pode ser lida por qualquer um que abra as ferramentas de desenvolvedor.
┌──────────────────────────────────────────┐
│ .env (fora do git, nunca commitado) │
│ STRIPE_SECRET_KEY=sk_live_... │
└───────────────────┬──────────────────────┘
│ injetado em tempo de execução
▼
┌──────────────────────┐ ┌──────────────────────┐
│ SERVIDOR │ │ NAVEGADOR (cliente) │
│ process.env.KEY ✓ │ ✗──────│ qualquer um pode ler │
│ chama o Stripe aqui│ NUNCA │ ferramentas dev · │
│ │ enviar │ "ver código-fonte" · │
│ │ para cá │ rede │
└──────────────────────┘ └──────────────────────┘
seguro: fica privado público: = vazado
Adicione .env (e .env.local, etc.) ao seu .gitignore antes de escrever um único segredo. Se uma chave chegar a parar no seu código ou histórico, trate-a como queimada: gire-a (gere uma nova e revogue a antiga) — apagar a linha não basta, porque a chave antiga continua válida e continua por aí.