Webhooks assinados

Webhooks assinados

Eventos de entrega, bounce e reclamação assinados com HMAC-SHA256.

Requisitos do receptor

Calcule a assinatura a partir do corpo bruto exato da requisição. Compare as assinaturas em tempo constante.

Controles de saída

A criação de endpoint exige HTTPS. Alvos privados, loopback, link-local, de metadados, com credenciais embutidas e internos são bloqueados e resolvidos novamente no momento da conexão. Redirecionamentos não são seguidos. A entrega usa timeouts e tentativas de retentativa limitados.

Controles implementados

TLS para os caminhos externos compatíveis de HTTP e submissão SMTP Chaves de API com hash, escopo limitado e expiração, com allowlists de IP opcionais

Limite da criptografia

O TLS é criptografia de transporte, não criptografia de e-mail de ponta a ponta. Os provedores do destinatário podem processar o conteúdo entregue. Clientes que precisam de confidencialidade em nível de mensagem devem adicionar um esquema apropriado, como S/MIME, PGP ou criptografia em nível de aplicação.

HMAC-SHA256
signed = timestamp + "\0" + event_id + "\0" + raw_body
expected = HMAC-SHA256(webhook_secret, signed)
constant_time_compare(expected, Postline-Signature)