Webhooks en integraties
Controleer een webhook-handtekening
Bereken de handtekening over de rauwe request body, vóór elke JSON-parsing, en vergelijk in constante tijd. Het opnieuw serialiseren van de payload verandert de bytes, en dan komt de handtekening nooit meer overeen.
Stappen
- Vang de rauwe body op als bytes. De meeste frameworks geven je standaard een al geparst object, en dan is het al te laat.
- Bereken de handtekening over precies die bytes met het secret van je endpoint.
- Vergelijk met een constante-tijdvergelijking in plaats van string-gelijkheid.
- Parse de JSON pas nadat de handtekening klopt.
- Weiger alles wat faalt, en log het delivery-id in plaats van de body.
Hoe je het resultaat controleert
Een echte aflevering slaagt in de controle, en dezelfde payload met één gewijzigd teken niet.
Wat er meestal misgaat
- Parsen en opnieuw serialiseren vóór het berekenen van de handtekening.
- Een body-parser-middleware die de stream opeet vóór je handler.
- Een simpele
===op de handtekening, die via timing lekt.
Heeft dit je probleem opgelost?
Dit hielp niet
Schrijf ons met platform en versie, de stappen die je nam, het verwachte resultaat en de betrokken workspace of QR-code. Maskeer elk geheim voordat je iets bijvoegt.
Schrijf naar support