Fri Jan 09 2026
...
Ažuriranje bezbednosti Webhook-a
Šta je novo
Prethodno je postojala dodatna otežanost prilikom postavljanja Webhook-ova u poređenju sa drugim platformama. Smatrali smo to dobrom stvari zbog dodatnih bezbednosnih mera koje su bile potrebne, međutim, nedavno smo se odlučili za mehanizam koji je jednako siguran ali ta bezbednost je opcionalna.
Prethodno ponašanje
Prethodno je sistem prosleđivao vaš API ključ u podacima i očekivao da ga validirate. Ako niste vratili 401 za nevalidan API ključ, sistem ne bi dozvolio postavljanje.
Novo ponašanje
Sada, sistem neće proslediti API ključ za nove konfiguracije webhook-a. Umesto toga, za nove i postojeće integracije uključen je potpisani HMAC. Možda želite ili ne želite da verifikujete ovaj potpis, u zavisnosti od nivoa potrebne bezbednosti.
Postojeće konfiguracije će nastaviti da prosleđuju API ključ - sada možete zatražiti da ovo isključite putem podrške.
Verifikacija HMAC potpisa
FastComments sada šalje sledeće zaglavlja sa svakim zahtevom za webhook:
| Zaglavlje | Opis |
|---|---|
X-FastComments-Timestamp |
Unix vremenska oznaka (sekunde) kada je zahtev potpisan |
X-FastComments-Signature |
HMAC-SHA256 potpis u formatu sha256=<hex> |
token |
Vaša API tajna (zadržana radi kompatibilnosti unazad) |
Kako se izračunava potpis
- Konkatenuj:
timestamp + "." + JSON_payload_body - Izračunaj HMAC-SHA256 koristeći vašu API tajnu kao ključ
- Hex-enkodiraj 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
# Verifikuj da je vremenska oznaka nedavna
now = int(time.time())
if abs(now - int(timestamp)) > 300:
return False
# Verifikuj potpis
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
Dodatno, uključeno sa ovom ažuriranjem - sada možete konfigurisati HTTP metodu za svaku vrstu događaja webhook-a:
- 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)
Prednosti bezbednosti
Novi sistem ima nekoliko prednosti:
- Zaštita od napada "man-in-the-middle"
- Prevencija napada ponovnog korišćenja putem verifikacije vremenskih oznaka
- Otkrivanje manipulacija sa podacima
Kompatibilnost unazad
Zaglavlje token koje sadrži vašu API tajnu i dalje se šalje sa svakim zahtevom. Postojeće integracije će nastaviti da rade bez modifikacije, a kao
što je prethodno pomenuto, možete zatražiti da isključite staro ponašanje putem podrške.
Dokumentacija
Za kompletnu dokumentaciju, pogledajte našu 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 puštanje ovih izmena. Javite nam ispod ako otkrijete bilo kakve probleme.
Pozdrav!
