Proteção Invisível contra Bots e Automações Maliciosas
O reCAPTCHA v3 representa uma evolução na segurança web. Diferente das versões anteriores, ele não interrompe o fluxo do usuário com desafios de “clique em todas as pontes”. Em vez disso, ele monitora o comportamento e retorna uma pontuação (score) que permite à aplicação decidir se a interação é legítima ou fruto de um script automatizado.
1. Preparação: Obtendo as Chaves de API Link para o cabeçalho
Antes de tocar no código, você precisa registrar sua aplicação no ecossistema do Google.
-
Acesse o Google reCAPTCHA Admin Console.
-
Etiqueta (Label): Use um nome identificável (Ex: “suaaplicacao-Prod”).
-
Tipo de reCAPTCHA: Selecione explicitamente o v3.
-
Domínios: Adicione seus domínios ativos (ex:
seudominio.com.br) e tambémlocalhostpara permitir testes em ambiente de desenvolvimento. -
Chaves: Após salvar, você receberá:
- Site Key (Chave do Site): Usada no frontend (Pública).
- Secret Key (Chave Secreta): Usada para validações no servidor (Privada).
2. Instalação do Pacote Link para o cabeçalho
Para o Angular, a biblioteca mais estável e utilizada é a ng-recaptcha. Ela abstrai a complexidade de carregar o script do Google manualmente.
Execute no seu terminal:
npm install ng-recaptcha --legacy-peer-deps
(Nota: A flag –legacy-peer-deps é recomendada caso você esteja utilizando versões muito recentes do Angular, como a v19 ou v21).
3. Configuração Global da Aplicação Link para o cabeçalho
Você deve injetar a sua Site Key no coração da aplicação para que o serviço esteja disponível em qualquer componente.
No seu arquivo de configuração (normalmente app.config.ts), adicione os seguintes provedores:
import { RECAPTCHA_V3_SITE_KEY, RecaptchaV3Module } from 'ng-recaptcha';
import { importProvidersFrom } from '@angular/core';
import { environment } from '../environments/environment';
export const appConfig: ApplicationConfig = {
providers: [
// Fornece a chave obtida no console do Google
{
provide: RECAPTCHA_V3_SITE_KEY,
useValue: environment.recaptchaSiteKey, // Armazene sua Site Key no environment.ts
},
// Importa o módulo necessário para o serviço funcionar
importProvidersFrom(RecaptchaV3Module)
]
};
4. Implementação no Componente de Ação Link para o cabeçalho
A melhor prática é disparar o reCAPTCHA apenas no momento em que o usuário realiza uma ação sensível, como clicar no botão “Gerar Lote”.
No seu componente (ex: gerador-lote.ts):
import { Component, inject } from '@angular/core';
import { ReCaptchaV3Service } from 'ng-recaptcha';
@Component({ ... })
export class GeradorLoteComponent {
private recaptchaV3Service = inject(ReCaptchaV3Service);
async acaoDeCriacao() {
// 1. Executa o desafio invisível associado a uma ação específica
this.recaptchaV3Service.execute('gerar_lote').subscribe({
next: (token) => {
if (token) {
// 2. Token gerado com sucesso!
// Agora você pode prosseguir com a lógica segura (ex: gravar no Firestore)
this.gravarNoBanco(token);
}
},
error: (err) => {
console.error('Erro no reCAPTCHA:', err);
alert('Segurança: Falha ao validar comportamento humano.');
}
});
}
}
5. Ajuste de Layout: Escondendo o Selo (Badge) Link para o cabeçalho
Por padrão, o Google exibe um selo flutuante no canto inferior direito. Se isso atrapalhar seu design ou cobrir botões importantes, você pode ocultá-lo, desde que exiba o texto legal no rodapé.
No seu styles.css global:
/* Oculta o selo flutuante sem quebrar a funcionalidade */
.grecaptcha-badge {
visibility: hidden !important;
}
No seu footer.component.html (Obrigatório por lei):
<p class="text-xs text-gray-400">
Este site é protegido pelo reCAPTCHA e a
<a href="https://policies.google.com/privacy" target="_blank">Privacidade</a> e
<a href="https://policies.google.com/terms" target="_blank">Termos</a> do Google se aplicam.
</p>
6. Fluxo de Validação Final Link para o cabeçalho
O fluxo completo de segurança que você acabou de implementar segue este caminho:
-
Interação: O usuário clica em um botão.
-
Token: O Angular solicita um token ao servidor do reCAPTCHA.
-
Assinatura: Esse token é enviado junto com os dados do lote para o Firebase.
-
App Check (Opcional/Avançado): O Firebase valida se o token é autêntico e se a origem é o seu domínio oficial, permitindo ou negando a gravação no Firestore.
Conclusão Link para o cabeçalho
Implementar o reCAPTCHA v3 não é apenas sobre “parar bots”; é sobre garantir que os recursos do seu servidor e as cotas do seu banco de dados sejam usados por pessoas reais. Combinando isso com o Firebase App Check, sua aplicação atinge um nível de segurança profissional, protegendo tanto a experiência do usuário quanto o seu bolso.