Skip to content

feat(webhook): frescor opcional (anti-replay) em verify_webhook_signature - #1

Merged
Gabrielmoraesp merged 1 commit into
mainfrom
fix/webhook-anti-replay
Jul 2, 2026
Merged

Gabrielmoraesp merged 1 commit into
mainfrom
fix/webhook-anti-replay

Conversation

@Gabrielmoraesp

Copy link
Copy Markdown
Contributor

Contexto

Parte da remediação do webhook de saída (achado F13 da auditoria da API). A assinatura HMAC prova autenticidade, não frescor — uma entrega assinada capturada poderia ser reenviada (replay). O backend agora assina id (UUID) + sentAt no corpo; este PR dá ao SDK a primitiva para o receptor rejeitar entregas obsoletas.

Novo parâmetro opcional tolerance_seconds: valida a assinatura e, se informado, exige que sentAt esteja dentro da janela.

Retrocompatível: sem o parâmetro/tolerância, o comportamento é idêntico. A computação do HMAC não mudou → golden vector permanece válido. Deduplicar por id (no corpo) continua a cargo do receptor.

Follow-up

Parte de um conjunto de PRs paralelos (Node/Python/Go/PHP) para paridade.

🤖 Generated with Claude Code

…y_webhook_signature

Novo parâmetro opcional `tolerance_seconds`: após validar o HMAC, rejeita
entregas cujo `sentAt` (no corpo assinado) esteja fora da janela. Aditivo e
retrocompatível (sem o param, comportamento idêntico). Pareado com o backend,
que agora assina `id` + `sentAt`; deduplique por `id` para idempotência.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@Gabrielmoraesp
Gabrielmoraesp merged commit cef8774 into main Jul 2, 2026
2 checks passed
@Gabrielmoraesp
Gabrielmoraesp deleted the fix/webhook-anti-replay branch July 2, 2026 15:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant