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
- GitGuardian, The State of Secrets Sprawl 2026 (28.649.024 segredos novos em commits públicos do GitHub em 2025; 1.275.105 de serviços de IA, +81%; 64% das chaves válidas de 2022 ainda ativas): https://www.gitguardian.com/state-of-secrets-sprawl-report-2026
- Firebase, Learn about using and managing API keys (atualizado em 06/10/2026; chave do Firebase pode ficar no código, a do Gemini nunca): https://firebase.google.com/docs/projects/api-keys
- OpenAI Help Center, Best Practices for API Key Safety: https://help.openai.com/en/articles/5112595-best-practices-for-api-key-safety
- Matt Palmer, Statement on CVE-2025-48757 (chave do Gemini e token do Google Maps expostos): https://mattpalmer.io/posts/statement-on-CVE-2025-48757/