Разумевање структуре веб-хук захтева
Веб-хук (енгл. webhook) представља механизам путем којег један систем шаље аутоматске информације другом систему у реалном времену, најчешће путем HTTP POST захтева. Да би се ови захтеви успешно обрадили, неопходно је прецизно разумети њихову структуру, која се састоји од HTTP метода, заглавља (енгл. headers) и тела захтева (енгл. body).
Приликом развоја и интеграције веб-хукова, програмери се често суочавају са изазовом како да испитају сирове податке који стижу са спољних сервиса. Алат Вебхоок Рекуест Инспецтор омогућава увоз ових података како би се анализирао њихов формат, идентификовала кључна заглавља и генерисала команда за локално тестирање.
Улога заглавља у веб-хук комуникацији
Заглавља имају критичну улогу у веб-хук комуникацији јер преносе метаподатке о самом захтеву. Она дефинишу тип садржаја који се шаље, као и безбедносне параметре којима се потврђује идентитет пошиљаоца.
Алат подржава унос заглавља у формату једно заглавље по реду, користећи стандардни облик Name: value. Приликом уноса података важе следећа техничка ограничења:
- Максимално је дозвољено 200 непразних линија заглавља. Ако се ова граница прекорачи, алат приказује грешку: „Има превише линија заглавља. Задржите захтев на 200 заглавља или мање.“.
- Укупна дужина заглавља не сме прећи 100.000 знакова. У супротном, појављује се порука: „Заглавља су предугачка за овај алат. Уклоните неповезане или поновљене вредности.“.
- Свака линија мора бити исправно форматирана. У случају неисправног уноса, алат пријављује грешку у формату: „
‹line›: Ред заглавља је неважећи. Користите назив: вредност.“.
Формати тела веб-хука и важност сировог садржаја
Тело веб-хука садржи стварни терет (енгл. payload) са подацима о догађају. За успешну обраду веб-хука на серверској страни, од кључне је важности користити тачно сирово тело снимљено пре било каквог рашчлањивања на страни сервера. Свака измена у размацима или редоследу поља може утицати на валидност података, посебно приликом верификације дигиталних потписа.
Алат аутоматски детектује и форматира следеће типове тела захтева:
- JSON: Тело се рашчлањује помоћу функције
JSON.parseи поново уређује ради лакшег читања. То значи да се оригинални размаци и распоред поља губе током форматирања. Ако тело изгледа као JSON али садржи синтаксне грешке, алат исписује: „Тело изгледа као ЈСОН, али се не може рашчланити.“. - URL-encoded: Подаци из обрасца се декодирају и приказују у читљивом формату. Уколико тело садржи неисправан проценат излаза (енгл. percent escape), алат враћа грешку: „Тело обрасца садржи непотпуни проценат излаза.“.
Остали типови тела (попут XML-а или обичног текста) остају у свом изворном облику без додатног форматирања. Максимална дозвољена дужина тела захтева је 1.000.000 знакова. Ако се ова граница прекорачи, алат приказује упозорење: „Тело је предугачко за овај алат. Нека буде испод 1.000.000 знакова.“. Ако је тело потпуно празно, у излазу ће бити приказано „(празно тело)“.
Веб-хук потписи и временске ознаке
Сигурност је један од најважнијих аспеката пријема веб-хукова. Пошиљаоци обично потписују захтеве како би прималац могао да утврди да ли пошиљка заиста долази из поверљивог извора и да ли је садржај мењан током преноса. То се постиже додавањем посебних заглавља која садрже криптографске потписе (нпр. HMAC) и временске ознаке (енгл. timestamps) за спречавање напада репродукцијом (енгл. replay attacks).
Алат идентификује заједничке потписе и сродна заглавља временске ознаке на основу препознавања шаблона у називима, као што су signature, hmac, digest и уобичајени називи за временске ознаке. Пронађена заглавља се приказују у одељку „Поља за потпис“. Ако таква заглавља нису присутна, алат исписује: „Није пронађен ниједан заједнички потпис или заглавље временске ознаке веб-хука.“.
Важно је нагласити разлику између инспекције и стварне верификације аутентичности веб-хука. Проналажење поља за потпис не доказује да је захтев аутентичан — за стварну проверу су потребна правила потписивања пошиљаоца, тајна или кључ, као и оригинални бајтови захтева. Алат не врши прорачун HMAC вредности, не извршава криптографске алгоритме, нити проверава временске оквире застарелости захтева.
Локално тестирање помоћу cURL команди
Након што се веб-хук захтев успешно увезе и анализира, алат генерише спремну команду за алат командне линије cURL. Ова команда омогућава програмерима да симулирају пријем веб-хука на својој локалној машини без потребе за слањем стварних захтева са спољних продукционих сервиса.
Генерисана cURL команда је фиксирана на локалну адресу:
http://localhost:3000/webhooks.
Овај излаз се приказује у пољу „Локални цУРЛ тест“ и садржи све потребне HTTP методе, заглавља и тело захтева у исправно заштићеном (енгл. shell-quoted) формату, спремном за извршавање у терминалу.
Приватност и сигурност података
Приликом рада са веб-хуковима, подаци често могу садржати осетљиве информације, идентификаторе или тестне токене. Обрада података у овом алату у потпуности се обавља локално. Ваш налепљени захтев остаје у вашем претраживачу. БроБроГо га не отпрема нити чува на својим серверима, чиме се обезбеђује да подаци не напуштају ваше локално окружење током анализе.
Често постављана питања (FAQ)
Може ли ова страница примити повратни позив путем веб-хука уживо?
Не. Залепите снимљени захтев овде за преглед. Страница не креира јавну крајњу тачку, не прима повратне позиве нити шаље генерисани тестни захтев.
Које формате тела веб-хука могу да прегледам?
ЈСОН и УРЛ кодирана тела обрасца су откривена и форматирана. Остала тела остају као обичан текст тако да алатка не погађа КСМЛ, вишеделни или бинарни садржај.
Да ли проналажење поља за потпис доказује да је захтев аутентичан?
Не. Алат приказује само потпис и сродна заглавља временске ознаке. Права верификација захтева тачна правила потписивања пошиљаоца, тајни или јавни кључ и оригиналне бајтове захтева.