felipe
Sinto muito pelo que aconteceu com você. Você precisa seguir as orientações do google para bloquear as solicitações apenas para o seu domínio ou subdomínio. Tambem pode seguir as orientações deles para criar alertas e limites de faturamento para evitar que isso aconteça. A documentação do google mostra que não há problema em deixar a chave de api exposta no js, o problema é não configurar essa chave de api com essas limitações.
Aqui um resumo de como melhorar a segurança:
(fonte chatgpt)
A chave de api do google maps pode ficar exposta de acordo com a documantação? se sim, como evitar uso indevido?
Resposta:
Sim — pode ficar exposta, mas não pode ficar “livre”.
A própria documentação da Google Maps Platform deixa claro:
chaves usadas no frontend (web/mobile) são públicas por natureza. O controle de segurança não é esconder, e sim restringir.
Como evitar uso indevido (o que realmente importa)
- Restrição por origem (ESSENCIAL)
Configure no console do Google:
HTTP referrers (web)
Ex:
https://seusite.com/*
https://www.seusite.com/*
IP (backend)
Para APIs usadas no servidor
Apps mobile
Android: SHA-1 + package name
iOS: bundle ID
👉 Isso impede que alguém use sua chave fora do seu app/site.
- Restrição por API (MUITO IMPORTANTE)
Limite a chave só às APIs que você usa:
Ex:
Maps JavaScript API
Geocoding API
Directions API
👉 Se alguém tentar usar outra API (tipo Places), falha.
- Separar chaves por uso
Não use uma única chave pra tudo:
1 chave → frontend (mapa no site)
1 chave → backend (geocoding, rotas, etc)
👉 Se vazar, o impacto fica limitado.
- Limites de uso (cota)
Configure quotas:
requests por dia
requests por minuto
👉 Evita surpresa na fatura.
- Monitoramento
Ative alertas de billing no Google Cloud.
👉 Se algo sair do normal, você descobre rápido.
- Backend quando necessário
Se a API permite, faça chamadas via servidor:
esconde lógica
evita exposição direta
permite validação (ex: usuário autenticado)
O que NÃO adianta
Obfuscar chave no JS
Esconder no código frontend
Colocar em variável “secreta” no browser
👉 Tudo isso dá pra extrair em segundos.
Resumo direto
Sim, pode ficar exposta
Segurança = restrição + controle