Bezpieczeństwo webhooka

Weryfikacja, kontrola dostępu i bezpieczne połączenia — tak, by integracja spełniała wymagania firm.

Bezpieczeństwo webhooka: HTTPS, weryfikacja i kontrola dostępu

Webhook jest publicznym endpointem, który wpływa na routing rozmów. W praktyce bezpieczeństwo to trzy warstwy: transport (HTTPS), uwierzytelnienie wywołań (Hash/sekret) i kontrola dostępu (IP/rate limiting/monitoring).

1) HTTPS bez kompromisów

  • używaj poprawnego certyfikatu (pełny łańcuch, aktualny),
  • nie opieraj produkcji o “ignore SSL errors” — to zwykle kończy się niestabilnością i błędami (np. SSL),
  • pilnuj terminów ważności certyfikatu i automatycznej odnowy.

HTTPS to nie “miły dodatek” — bez niego trudniej o stabilność i wiarygodną diagnostykę.

2) Hash jako sekret (weryfikacja wywołań)

Jeśli w request przychodzi Hash, traktuj go jak “shared secret” do weryfikacji, że wywołanie pochodzi z Twojej konfiguracji, a nie z internetu.

  • porównuj Hash z wartością oczekiwaną po swojej stronie (stała/secret manager),
  • jeśli Hash się nie zgadza: zwracaj bezpieczną odpowiedź (np. Hangup) i loguj zdarzenie jako incydent,
  • nie loguj Hash w logach aplikacyjnych ani w narzędziach dostępnych szeroko (to sekret),
  • w razie podejrzenia wycieku — rotuj Hash w panelu i po stronie aplikacji.

Dla kompletnego kontekstu requestu zobacz: Webhook: żądanie.

3) Kontrola dostępu: IP, rate limiting, monitoring

  • Allowlista IP — jeśli masz stabilną listę adresów źródłowych, to najszybsza warstwa “odcięcia śmieciowego ruchu”.
  • Rate limiting — limituj liczbę żądań / minutę na endpoint (waf/reverse proxy).
  • WAF / reverse proxy — najprościej: terminacja TLS + limity + logowanie na brzegu.
  • Monitoring anomalii — alerty na skoki ruchu, wzrost 4xx/5xx, wzrost czasu odpowiedzi.

Nawet jeśli masz Hash, rate limiting nadal ma sens — chroni przed “zalaniem” endpointu i utrzymuje przewidywalność.

Połączenia wychodzące i uprawnienia (CallExternalNumber)

Jeśli w scenariuszach używasz połączeń na numery zewnętrzne, to jest to osobny “obszar ryzyka”: koszt, nadużycia i bezpieczeństwo procesu.

  • włączaj połączenia zewnętrzne tylko, jeśli są potrzebne biznesowo,
  • ograniczaj, gdzie scenariusz może dzwonić (reguły po Twojej stronie),
  • loguj próby połączeń zewnętrznych (UniqueCallId + Destination + CallStatus),
  • stosuj limity i kontrolę kosztów po stronie procesu (np. max próby eskalacji).

Zobacz: Akcje API (CallExternalNumber i Options).

Chcesz domknąć temat produkcyjnie?

Najlepszy zestaw na start: HTTPS + weryfikacja Hash + rate limiting + sensowny fallback. Potem dopiero dopracowujesz allowlistę IP i polityki uprawnień.

Stabilność    Przykłady kodu