Validatore di firma webhook.
Incolla un payload di webhook, il tuo secret di firma e la firma ricevuta. Questo calcola l'HMAC (SHA-256 o SHA-1) con la Web Crypto API e ti dice se corrisponde. Generico — funziona con qualsiasi webhook firmato con HMAC. Nulla lascia il tuo dispositivo.
Usa esattamente i byte ricevuti — riserializzare il JSON cambia l'hash.
L'HMAC è stato calcolato qui sotto. Incolla una firma per verificarne la corrispondenza.
Tutto viene eseguito localmente tramite la Web Crypto API — il payload e il secret non lasciano mai questa pagina. Preferisci sempre un secret di test a un secret di produzione reale in qualsiasi strumento online.
La risposta breve
Cos'è una firma webhook?
Una firma webhook è un hash con chiave — un HMAC — del corpo della richiesta, calcolato dal mittente con un secret condiviso da entrambe le parti e inviato insieme alla richiesta, di solito in un header. Per verificarla, ricalcoli l'HMAC sull'esatto corpo grezzo con lo stesso secret e algoritmo e confronti. Una corrispondenza dimostra che il payload proviene da chi possiede il secret e non è stato alterato durante il transito. Autentica e protegge l'integrità — non cifra il payload.
Come verificare correttamente una firma
- Cattura il corpo grezzo della richiesta prima di qualsiasi parsing. La riserializzazione JSON riordina chiavi e spazi, il che cambia l'hash.
- Esegui HMAC con il secret condiviso e la funzione di hash del mittente (SHA-256 nella maggior parte delle API moderne).
- Codifica il risultato in esadecimale e confrontalo con l'header della firma, ignorando qualsiasi prefisso di schema come sha256=.
- In produzione, confronta con una funzione di uguaglianza a tempo costante per evitare canali laterali di temporizzazione, e rifiuta le richieste obsolete usando il timestamp firmato dal provider.
Domande frequenti
Cos'è una firma webhook?
Una firma webhook è un hash con chiave (HMAC) del corpo della richiesta, calcolato dal mittente con un secret condiviso e inviato in un header. Il destinatario ricalcola l'HMAC sull'esatto corpo grezzo con lo stesso secret e confronta — se corrispondono, il payload è autentico e non modificato. Dimostra origine e integrità senza cifrare il payload.
Come verifico una firma HMAC di un webhook?
Prendi il corpo grezzo esatto della richiesta (prima di qualsiasi parsing o riserializzazione JSON), esegui l'HMAC con il tuo secret condiviso e l'algoritmo di hash del mittente (di solito SHA-256), e codifica il risultato in esadecimale. Confrontalo con l'header della firma, ignorando prefissi come 'sha256='. Se sono uguali, la firma è valida.
Perché la mia firma non corrisponde?
Le cause più comuni sono: il corpo è stato riserializzato e quindi differisce byte per byte da quello firmato; secret o algoritmo di hash errato; il provider firma una stringa che include anche un timestamp o un prefisso di versione; oppure un disallineamento tra codifica hex e base64. Esegui sempre l'hash sui byte grezzi esatti così come ricevuti.
È sicuro incollare qui un secret reale?
Il calcolo viene eseguito interamente nel tuo browser tramite la Web Crypto API — nulla viene caricato o registrato. Come buona abitudine generale, preferisci comunque un secret di test a uno di produzione reale in qualsiasi strumento online, e ruota un secret che sospetti sia stato esposto.
Devo usare SHA-256 o SHA-1?
Usa HMAC-SHA-256. SHA-1 è offerto qui solo perché alcuni provider legacy inviano ancora firme SHA-1. Le nuove integrazioni dovrebbero standardizzarsi su SHA-256.
La firma cifra il mio payload?
No. Una firma HMAC autentica il payload e dimostra che non è stato alterato, ma il corpo viene comunque inviato in chiaro. Usa HTTPS (TLS) per la riservatezza; la firma riguarda origine e integrità, non la segretezza.
Perché confrontare a tempo costante in produzione?
Un confronto di stringhe ingenuo può rivelare quanti caratteri iniziali corrispondono tramite minime differenze di tempo, cosa che un attaccante potrebbe sfruttare per falsificare una firma. In produzione, confronta con una funzione a tempo costante come crypto.timingSafeEqual. Questo strumento nel browser confronta direttamente perché non c'è un attaccante remoto che possa cronometrarlo.
Verifica qualsiasi webhook firmato con HMAC.
Questo validatore funziona con qualsiasi provider che firma i webhook con HMAC. Quando sei pronto a sviluppare, BroadNet offre un'API REST con token Bearer, webhook per i report di consegna e bind SMPP 3.4 diretti.