WardenAnalisar meu site

Guia · Chaves e segredos

Chave de API exposta no site: como descobrir e o que fazer

Tudo o que vai no JavaScript do seu site pode ser lido por qualquer visitante. Algumas chaves são feitas para isso; outras dão acesso à sua conta, ao seu banco ou ao seu cartão de crédito. Se uma chave secreta apareceu no código público, apagá-la não basta: ela precisa ser trocada.

Atualizado em 29/09/2026 · leitura de 7 min · por Warden

Por que a chave vai parar no navegador

Em apps feitos com Vite, Next.js e afins, toda variável com prefixo público — VITE_, NEXT_PUBLIC_, REACT_APP_ — é copiada para dentro do JavaScript que o navegador baixa. É o comportamento esperado: o prefixo existe justamente para dizer “esta pode ser pública”.

O problema começa quando uma chave secreta ganha esse prefixo. Costuma acontecer quando a IA precisa fazer uma chamada funcionar e faz direto do navegador — e a chave vai junto.

Quais podem ficar no navegador — e quais nunca

ChavePode ir no site?Por quê
Supabase anonSimFoi feita para isso; quem protege os dados é o RLS
Firebase apiKeySimQuem protege são as regras do Firestore e do Storage
Stripe publicável pk_live_…SimSó cria o formulário de pagamento
Google MapsSim, restritaRestrinja a chave ao seu domínio no Google Cloud
Supabase service_roleNuncaIgnora todas as regras de acesso do banco
OpenAI sk-… e outras de IANuncaQualquer pessoa gasta o seu crédito
Stripe secreta sk_live_…NuncaDá acesso a cobranças e reembolsos
AWS AKIA…NuncaPode dar acesso à sua conta de nuvem
E-mail (Resend re_…, SendGrid SG.…)NuncaQualquer pessoa manda e-mail em seu nome

Como descobrir se o seu site expõe uma

  1. Abra o site, aperte F12, vá em Fontes (Sources) e use a busca em todos os arquivos (Ctrl+Shift+F) por sk-, sk_live, service_role, AKIA e secret.
  2. Na aba Rede (Network), veja para quais endereços o site manda requisições e com quais cabeçalhos.
  3. No projeto, procure as variáveis com prefixo público: todas elas vão para o navegador. Confira se alguma é secreta.
  4. Se o código está no GitHub, ferramentas como gitleaks ou trufflehog procuram segredos no histórico inteiro do repositório — não só na versão atual.
  5. Ou rode uma análise passiva, que lê os arquivos que a sua página publica e procura esses formatos de chave.

Achou uma. E agora? A ordem importa

  1. Troque a chave agora — revogue e gere outra no painel do serviço. Apagar do código não basta: a chave já foi baixada por quem visitou o site e continua no histórico do repositório.
  2. Mova a chamada para o servidor: uma rota de API, uma Edge Function do Supabase ou uma função serverless. O navegador fala com a sua rota; só ela conhece a chave.
  3. Ponha limites no provedor: teto de gasto e alerta de uso, que OpenAI, Google Cloud e Stripe oferecem.
  4. Olhe o uso recente no painel do serviço, procurando consumo que não foi seu.

Esconder não é proteger

Codificar a chave em base64 ou ofuscar o código não resolve. Tudo o que o navegador consegue usar, qualquer visitante também consegue ler.

Prompt para colar na sua IA

Encontrei a chave do serviço [NOME DO SERVIÇO] no código do front-end.

1. Mova todas as chamadas a esse serviço para uma função no servidor
   (Edge Function do Supabase ou uma rota de API).
2. Leia a chave de uma variável de ambiente SEM prefixo público
   (nada de VITE_ ou NEXT_PUBLIC_).
3. Faça o front-end chamar apenas essa função.
4. Confirme que a chave não aparece em nenhum arquivo do front-end
   e mostre onde ela passou a ser lida.

Continue lendo