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ń.