← todos os posts

Chave de API no código: como achar a sua exposta em 2 minutos (e o que fazer hoje)

O código-fonte da página não mostra onde a chave se esconde. A busca certa, as chaves que podem ficar à vista, e o que fazer na ordem se achar uma.

"Chave de API exposta no frontend."

É um item seco numa lista de falhas comuns em app feito com IA. Traduzindo: chave de API é a senha que o seu app usa pra conversar com outro serviço (a OpenAI, o Google, o meio de pagamento). Frontend é a parte do app que roda no navegador de quem visita. Juntando: a senha está no computador de qualquer visitante.

E não precisa de ninguém procurando por você. Um programador brasileiro escreveu numa newsletter que quem acha essas coisas "não é nenhum hacker que está te monitorando é bot arrendo [varrendo] o GitHub inteiro, 24h por dia". É relato, não medição, mas bate com quem mede.

Por que a sua pode estar lá sem você saber

A IA faz o app funcionar pelo caminho mais curto. O caminho mais curto pra chamar a OpenAI é colocar a chave direto no código da tela. Funciona de primeira. Você vê a resposta aparecer e segue.

Ninguém te contou que existe outro caminho. Não é descuido seu: é a parte que o "funciona" não mostra.

O tamanho disso: a GitGuardian, empresa que vende verificação de segredos, contou 28,6 milhões de segredos novos (chaves, senhas, tokens) publicados em commits públicos do GitHub em 2025 (commit é cada pacote de alteração salvo no código), e 1.275.105 ligados a serviços de IA, 81% a mais que no ano anterior. O que o número não diz: é só repositório público, e quem mediu vende a solução. Diz o bastante: a categoria que mais cresce é exatamente a chave que app feito com IA usa.

O checklist: 2 minutos pra achar

Num post anterior sugeri abrir o código-fonte da página e buscar secret. Vale, mas tem um buraco: app moderno quase não tem nada nessa página. O código de verdade vem em arquivos separados, carregados depois. A busca precisa olhar dentro deles.

1. Abra o seu app publicado no Chrome e faça login, pra tela carregar tudo.

2. Abra as ferramentas do navegador: F12 (no Mac, Cmd+Option+I).

3. Busque em todos os arquivos de uma vez: Ctrl+Shift+F (no Mac, Cmd+Option+F). Abre uma caixa que procura em todo código que o navegador recebeu.

4. Procure, um de cada vez:

sk-proj-
sk-ant-
sk_live_
sb_secret_
service_role
AIza

Os quatro primeiros são chaves secretas de OpenAI, Anthropic (a empresa do Claude), Stripe e Supabase. service_role é a chave mestra antiga do Supabase. Achou qualquer um deles? Exposta.

5. O caso AIza. Toda chave do Google começa assim, e aqui mora a confusão. A documentação do Firebase (atualizada em 6 de outubro de 2026) diz que a chave restrita aos serviços do Firebase "não precisa ser tratada como segredo" e pode ficar no código: quem protege o dado são as regras do banco. Mas a chave da API do Gemini, a IA do Google, "nunca" deve estar no código. Achou AIza? Abra o Google Cloud, vá em Credenciais e veja quais serviços aquela chave libera. Se o Gemini estiver na lista, é secreta.

Não se assuste com pk_, sb_publishable_ ou a chave anon do Supabase: essas foram feitas pra ficar no navegador. A tabela completa de qual é qual está aqui.

Mais três lugares onde ela costuma estar

  • A conversa com a IA. Você colou a chave no chat pra ela "configurar"? Essa conversa fica guardada na plataforma. Trate como exposta.
  • O repositório no GitHub. Busque os mesmos prefixos lá. Apagar a linha não resolve: o histórico guarda.
  • Prints e mensagens. Print do painel mandado no grupo do WhatsApp pra pedir ajuda também conta.

Achou. O que fazer, nesta ordem

1. Gere uma chave nova e apague a antiga, no painel do serviço de onde ela veio. Primeiro isso, antes de mexer no código. A GitGuardian contou que 64% das chaves válidas que eles acharam expostas em 2022 ainda funcionavam em janeiro de 2026. Esconder não desliga; trocar desliga.

2. Olhe o uso. No painel do serviço, veja o consumo dos últimos dias. Pico que você não reconhece é alguém usando a sua chave na sua conta.

3. Ponha um limite de gasto, se o serviço oferece. É o que segura o estrago da próxima vez.

4. Tire a chave do navegador. O pedido pra IA:

"A chave da [OpenAI] está no código que roda no navegador. Mova a chamada pra uma função no servidor, com a chave guardada como segredo no painel da plataforma. O app deve chamar essa função, e nunca a [OpenAI] direto. Depois me diga como eu confiro que a chave não aparece mais no navegador."

Servidor é o computador da plataforma onde o seu app roda, que o visitante não enxerga. É lá que a chave mora. A própria OpenAI orienta nunca colocar a chave em código de navegador ou de app de celular.

5. Republique e repita a busca do passo 3. A IA dizer que moveu não é prova. Prova é você buscar sk-proj- e não achar nada.

A parede ao lado

O caso que virou registro oficial de falha no Lovable, em 2025, não expôs só dado de cliente: o pesquisador Matt Palmer achou, nos mesmos apps, pontos de acesso entregando chave do Gemini e token do Google Maps. Chave exposta e banco aberto costumam andar juntos, porque vêm do mesmo atalho. Se você achou uma, faça também o teste das duas contas.

Uma chave no lugar certo é um item de uma lista com ordem: o banco que é seu, teste separado de produção, regra que separa um cliente do outro, ponto de retorno. Hoje você fechou um.

Fontes