Segurança

Última atualização: abril de 2026

Armazenamento de senhas

As senhas são armazenadas com hash bcrypt (cost factor 12). Senhas em texto puro nunca são armazenadas, nem temporariamente na memória do servidor — são descartadas imediatamente após o hash. Durante o cadastro, as senhas são verificadas pela API Have I Been Pwned, e senhas com histórico de vazamento conhecido são rejeitadas.

Tokens e sessões

Os tokens de autenticação são JWTs assinados com o algoritmo HS256. Em produção, é necessário um segredo JWT de pelo menos 32 caracteres — o servidor não iniciará sem ele.

Os tokens de atualização são armazenados com hash bcrypt (cost factor 10). São rotacionados a cada uso — cada atualização emite um novo token e invalida o anterior. Os TTLs de ambos os tokens são configuráveis por projeto.

As sessões são gerenciadas no servidor com endereço IP, user agent e timestamp da última atividade. Os usuários podem visualizar sessões ativas e revogar sessões individuais ou todas pelo painel de controle.

Autenticação multifator

É suportada autenticação multifator baseada em TOTP. Os segredos TOTP são criptografados com AES antes do armazenamento. São gerados 10 códigos de backup por usuário, cada um com hash HMAC-SHA256. A verificação dos códigos de backup usa comparação em tempo constante para prevenir ataques de temporização.

OAuth e login social

Os parâmetros de estado OAuth são gerados usando crypto.randomBytes(32) para prevenir ataques CSRF. São suportados 20 provedores OAuth, e as URLs de callback são restritas por projeto.

Passkeys (WebAuthn)

A autenticação por passkeys é construída sobre o padrão FIDO2/WebAuthn. A verificação no lado do servidor usa a biblioteca SimpleWebAuthn.

Segurança de rede

Toda a comunicação é criptografada via TLS. HSTS (HTTP Strict Transport Security) é aplicado com max-age de 1 ano.

CORS é configurado com uma lista branca dinâmica que permite apenas domínios registrados em cada projeto. Origens curinga não são utilizadas.

O servidor API usa o middleware Helmet para definir cabeçalhos de segurança incluindo Content-Security-Policy, X-Frame-Options (DENY) e X-Content-Type-Options (nosniff).

Proteção contra força bruta

Tentativas de login falhadas são registradas por usuário. Por padrão, as contas são bloqueadas por 300 segundos (5 minutos) após 5 tentativas falhadas. Esses limites são configuráveis nas configurações de segurança de cada projeto. Login bem-sucedido reseta o contador de falhas.

Cloudflare Turnstile CAPTCHA pode ser habilitado por projeto, adicionando desafios de proteção contra bots nos fluxos de cadastro e login.

Validação de entrada

Todas as entradas da API são validadas usando class-validator. Campos não reconhecidos são automaticamente removidos (modo whitelist), e requisições contendo campos explicitamente proibidos são rejeitadas. Senhas exigem no mínimo 8 caracteres. Consultas ao banco de dados usam queries parametrizadas do TypeORM para prevenir injeção SQL.

Segurança de Webhooks

Cada endpoint de webhook recebe um segredo de assinatura único na criação. Os payloads de webhook são assinados com HMAC-SHA256, entregues com um timestamp no cabeçalho X-Authon-Signature. Entregas falhadas são automaticamente retentadas até 3 vezes.

Reportar vulnerabilidades

Se você descobrir uma vulnerabilidade de segurança, por favor reporte para security@authon.dev. Não abra uma issue pública — entre em contato diretamente por e-mail.

Authon — Plataforma universal de autenticação