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
- Przechwyć surowe ciało jako bajty. Większość frameworków domyślnie oddaje już sparsowany obiekt, a to za późno.
- Policz podpis dokładnie na tych bajtach, używając sekretu swojego endpointu.
- Porównuj funkcją stałoczasową, a nie zwykłą równością łańcuchów.
- Parsuj JSON dopiero po zweryfikowaniu podpisu.
- 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