Analýza struktury požadavků webhooku
Při integraci externích služeb a systémů hrají webhooky klíčovou roli v předávání událostí v reálném čase. Webhook je v podstatě HTTP požadavek, který odesílatel (například platební brána, e-shopová platforma nebo CRM) směřuje na vaši aplikaci. Pro správné zpracování těchto událostí je nezbytné přesně porozumět struktuře příchozího požadavku.
Každý požadavek webhooku se skládá ze tří hlavních částí: HTTP metody, sady záhlaví (headers) a těla požadavku (body). Zatímco metoda určuje typ operace, záhlaví přenášejí metadata o formátu dat a zabezpečení. Tělo pak obsahuje samotná data události. Nástroj Inspektor požadavků webhooku umožňuje vložit tyto tři komponenty zachyceného požadavku, analyzovat jejich formát a připravit podklady pro lokální testování.
Vstupní parametry a limity pro kontrolu
Pro provedení analýzy vyžaduje nástroj zadání následujících údajů, které odpovídají struktuře standardního HTTP požadavku:
- Metoda: Výběr z definovaného seznamu HTTP metod, který obsahuje POST, PUT, PATCH, GET a DELETE.
- Záhlaví: Seznam hlaviček, kde každé záhlaví musí být uvedeno na samostatném řádku ve formátu "Název: hodnota". Pro zpracování platí limit maximálně 200 neprázdných řádků záhlaví a celková délka textu záhlaví nesmí překročit 100 000 znaků.
- Tělo: Přesné, nezpracované tělo požadavku v surovém stavu (raw body), jak bylo zachyceno před jakoukoli analýzou nebo úpravou na straně serveru. Maximální povolená délka těla je 1 000 000 znaků.
Při práci s tělem požadavku je kritické zachovat jeho původní podobu. Jakékoli změny v kódování, mezerách nebo odřádkování mohou ovlivnit interpretaci dat a validaci bezpečnostních prvků.
Formátování těla a detekce datových typů
Nástroj automaticky rozpoznává dva nejčastější formáty těla webhooků: JSON a URL-encoded data formuláře. Ostatní typy obsahu jsou ponechány a zobrazeny jako prostý text.
Pokud je detekován formát JSON, nástroj jej analyzuje pomocí standardní metody JSON.parse. Je důležité mít na paměti, že během tohoto procesu dochází k přeorganizování polí a odstranění původních bílých znaků. Výsledné formátované tělo tedy reprezentuje sémantický obsah, ale nemusí se bajt po bajtu shodovat s původním vstupem. Pokud je tělo požadavku prázdné, výstup zobrazí hodnotu (prázdné tělo).
V případě chyb ve formátu těla nebo překročení limitů nástroj zobrazí příslušná chybová hlášení:
- Při pokusu o analýzu bez vložených dat:
Nejprve vložte alespoň jedno záhlaví nebo tělo požadavku. - Při překročení délky záhlaví:
Záhlaví jsou pro tento nástroj příliš dlouhá. Odstraňte nesouvisející nebo opakované hodnoty. - Při překročení délky těla:
Tělo je pro tento nástroj příliš dlouhé. Udržujte jej pod 1 000 000 znaků. - Při překročení počtu řádků záhlaví:
Je příliš mnoho řádků záhlaví. Ponechte požadavek na 200 záhlaví nebo méně. - Při nesprávném formátu řádku záhlaví:
‹line›: Řádek záhlaví je neplatný. Použijte název: hodnota. - Při neplatném JSON formátu:
Tělo vypadá jako JSON, ale nelze jej analyzovat. - Při poškozeném kódování formuláře:
Tělo formuláře obsahuje neúplné procento escape.
Význam záhlaví, podpisů a časových razítek
Záhlaví webhooku plní klíčovou roli v komunikaci, protože definují typ obsahu (např. Content-Type) a často nesou bezpečnostní prvky. Odesílatelé webhooků obvykle připojují speciální hlavičky obsahující kryptografické podpisy a časová razítka, které slouží k ověření původu a integrity zprávy.
Nástroj vyhledává v předaných záhlavích známé vzory názvů, které odpovídají běžným implementacím podpisů a časových razítek. Identifikuje klíčová slova jako signature, hmac, digest a obvyklé názvy pro časové údaje. Nalezená pole jsou následně vypsána v sekci podpisových polí. Pokud žádné takové záhlaví detekováno není, zobrazí se zpráva Nebyl nalezen žádný společný podpis nebo hlavička časového razítka webhooku..
Je nutné striktně rozlišovat mezi inspekcí (detekcí) a samotným ověřením autenticity. Nástroj pouze identifikuje přítomnost těchto polí. Neprovádí žádné výpočty HMAC, neověřuje kryptografické algoritmy, neporovnává původní bajty payloadu s tajným klíčem (secret), nekontroluje časové okno pro ochranu před replay útoky ani neprovádí specifické ověření podle poskytovatelů služeb.
Lokální testování pomocí cURL
Jedním z hlavních přínosů inspekce webhooku je možnost replikovat příchozí požadavek v lokálním vývojovém prostředí. Nástroj pro tento účel generuje spustitelný příkaz cURL, který je upraven pro použití v příkazové řádce (shell-quoted).
Tento vygenerovaný příkaz cURL je pevně směrován na lokální adresu:
http://localhost:3000/webhooks
Pomocí tohoto příkazu můžete snadno simulovat odeslání webhooku na váš lokálně běžící server, což usnadňuje ladění kódu, který zpracovává přijatá data, bez nutnosti neustálého generování reálných událostí v externí službě.
Ochrana soukromí a zpracování dat
Při analýze webhooků, které mohou obsahovat citlivá data o objednávkách, uživatelích či transakcích, je bezpečnost prioritou. Zpracování vložených dat probíhá výhradně lokálně ve vašem webovém prohlížeči. Web BroBroGo tyto informace nikam nenahrává ani je neukládá na serverech.
Často kladené otázky (FAQ)
Může tato stránka přijímat živé zpětné volání webhooku? Ne. Vložte sem zachycenou žádost pro kontrolu. Stránka nevytváří veřejný koncový bod, nepřijímá zpětná volání ani neodesílá vygenerovaný testovací požadavek.
Které formáty těla webhooku mohu zkontrolovat? Těla formulářů zakódovaná ve formátu JSON a URL jsou detekována a naformátována. Ostatní těla zůstávají jako prostý text, takže nástroj nehádá XML, vícedílný nebo binární obsah.
Dokazuje nalezení pole podpisu, že požadavek je autentický? Ne. Nástroj zobrazí pouze záhlaví podpisu a souvisejícího časového razítka. Skutečné ověření vyžaduje přesná pravidla pro podepisování odesílatele, tajný nebo veřejný klíč a původní bajty požadavku.