Przejdź do treści

Webhooki i integracje

Zweryfikuj podpis webhooka

Policz podpis na surowym ciele żądania, przed jakimkolwiek parsowaniem JSON, i porównaj w stałym czasie. Ponowna serializacja ładunku zmienia bajty, i podpis już nigdy się nie zgodzi.

Kroki

  1. Przechwyć surowe ciało jako bajty. Większość frameworków domyślnie oddaje już sparsowany obiekt, a to za późno.
  2. Policz podpis dokładnie na tych bajtach, używając sekretu swojego endpointu.
  3. Porównuj funkcją stałoczasową, a nie zwykłą równością łańcuchów.
  4. Parsuj JSON dopiero po zweryfikowaniu podpisu.
  5. Odrzucaj wszystko, co nie przejdzie, i loguj identyfikator dostarczenia zamiast ciała.

Jak sprawdzić wynik

Prawdziwe dostarczenie przechodzi weryfikację, a ten sam ładunek z jednym zmienionym znakiem nie.

Co zwykle idzie nie tak

  • Parsowanie i ponowna serializacja przed policzeniem podpisu.
  • Middleware parsujące ciało, które zjada strumień przed twoim handlerem.
  • Zwykłe === na podpisie, które przecieka czasowo.
Czy to rozwiązało twój problem?

To nie pomogło

Napisz do nas, podając platformę i wersję, wykonane kroki, oczekiwany wynik oraz workspace lub kod QR, którego to dotyczy. Zamaskuj każdy sekret, zanim cokolwiek załączysz.

Napisz do pomocy