Fri Jan 09 2026
...
Ažuriranje bezbednosti Webhook-a
Šta je novo
Ranije je bilo dodatne težine prilikom postavljanja Webhook-a u poređenju sa drugim platformama. Smatrali smo da je to dobra stvar zbog dodatnih bezbednosnih mera koje su bile potrebne, međutim, nedavno smo se odlučili za mehanizam koji je jednako bezbedan, ali ta bezbednost je opciona.
Prethodno ponašanje
Ranije je sistem slao vaš API ključ u payload-ima i očekivao da ga validirate. Ako niste vratili 401 za nevažeći api ključ, sistem nije dozvoljavao postavljanje.
Novo ponašanje
Sada, sistem neće slati API ključ za nova podešavanja webhook-a. Umesto toga, za nove i postojeće integracije uključen je potpisan HMAC potpis. Možda želite ili ne želite da validirate ovaj potpis, u zavisnosti od nivoa potrebne bezbednosti.
Postojeća podešavanja će nastaviti da šalju API ključ - sada možete zatražiti da to isključite putem podrške.
Verifikacija HMAC potpisa
FastComments sada šalje sledeće header-e sa svakim webhook zahtevom:
| Header | Opis |
|---|---|
X-FastComments-Timestamp |
Unix timestamp (sekunde) kada je zahtev potpisan |
X-FastComments-Signature |
HMAC-SHA256 potpis u formatu sha256=<hex> |
token |
Vaš API Secret (zadržan radi kompatibilnosti) |
Kako se računa potpis
- Spojiti:
timestamp + "." + JSON_payload_body - Izračunati HMAC-SHA256 koristeći vaš API Secret kao ključ
- Hex-enkodirati rezultat
Primer verifikacije (Python)
import hmac
import hashlib
import time
import json
def verify_webhook_signature(headers, body, api_secret):
timestamp = headers.get('X-FastComments-Timestamp')
signature = headers.get('X-FastComments-Signature')
if not timestamp or not signature:
return False
# Verifikacija da je timestamp nov
now = int(time.time())
if abs(now - int(timestamp)) > 300:
return False
# Verifikacija potpisa
payload = json.dumps(body, separators=(',', ':'))
message = f"{timestamp}.{payload}"
expected = hmac.new(
api_secret.encode(),
message.encode(),
hashlib.sha256
).hexdigest()
return signature == f"sha256={expected}"
Selekcija HTTP Metoda
Osim toga, u sklopu ovog ažuriranja - sada možete konfigurisati HTTP metodu za svaki tip webhook događaja:
- Kreiraj Događaj: POST ili PUT (podrazumevano: PUT)
- Ažuriraj Događaj: POST ili PUT (podrazumevano: PUT)
- Obriši Događaj: DELETE, POST ili PUT (podrazumevano: DELETE)
Bezbednosne Prednosti
Novi sistem ima nekoliko prednosti:
- Zaštita od napada "čovek u sredini"
- Sprečavanje ponovljenih napada putem verifikacije vremena
- Detekcija manipulacije payload-om
Kompatibilnost sa prethodnim verzijama
token header koji sadrži vaš API Secret se još uvek šalje sa svakim zahtevom. Postojeće integracije će nastaviti da rade bez izmene, i kao
što je ranije pomenuto možete zatražiti da isključite staro ponašanje putem podrške.
Dokumentacija
Za kompletnu dokumentaciju, pogledajte naš Vodič za Webhook-ove.
Na kraju
Kao i kod svih velikih izdanja, drago nam je što smo mogli da odvojimo vreme za optimizaciju, testiranje i pravilno objavljivanje ovih izmena. Javite nam ispod ako otkrijete bilo kakve probleme.
Pozdrav!
