# Walidacja adresów IP powiadomień

Bezpieczeństwo integracji to absolutny priorytet. Aby mieć 100% pewności, że otrzymane powiadomienie IPN faktycznie pochodzi od systemu SimPay (a nie od złośliwego użytkownika próbującego wyłudzić opłacenie zamówienia), **zdecydowanie zalecamy wdrożenie walidacji adresów IP**.

Wdrożenie tego mechanizmu całkowicie uniemożliwia ataki typu *IPN Spoofing* (podszywanie się pod nasze serwery).

## Jak poprawnie weryfikować nadawcę?

Nasza infrastruktura sieciowa jest dynamiczna, co oznacza, że pula naszych adresów IP używanych do wysyłki webhooków może ulegać zmianom. Z tego powodu proces autoryzacji każdego powiadomienia powinien wyglądać następująco:

1. W momencie, gdy Twój serwer odbiera żądanie POST (Webhook), odczytujesz adres IP nadawcy z nagłówka połączenia.
2. Następnie Twój system wykonuje szybkie zapytanie `GET` do naszego publicznego endpointu:
`https://api.simpay.pl/ip`
3. Nasze API zwraca aktualną, autoryzowaną listę adresów IP.
4. Porównujesz IP nadawcy webhooka z otrzymaną listą. Jeśli adres znajduje się na liście – powiadomienie jest autentyczne i możesz bezpiecznie zmienić status zamówienia.


### Przykład odpowiedzi z endpointu `/ip`

Wysyłając zapytanie pod adres `https://api.simpay.pl/ip`, otrzymasz odpowiedź w formacie JSON zawierającą tablicę z naszymi aktualnymi adresami IPv4.


```json
{
  "success": true,
  "data": [ // tablica adresów IP
    "X.X.X.X",
    "Y.Y.Y.Y"
  ]
}
```

## Nie cache-uj wyników!

**Absolutnie odradzamy cachowania (zapisywania w pamięci podręcznej) listy adresów IP pobranej z tego endpointu!**

Musisz odpytywać adres `https://api.simpay.pl/ip` w czasie rzeczywistym, **przy każdym pojedynczym powiadomieniu IPN**, które do Ciebie trafia.

Dlaczego to takie ważne? Lista naszych adresów IP może się zmienić w dowolnej chwili (np. w związku z pracami konserwacyjnymi, aktualizacjami bezpieczeństwa czy skalowaniem serwerów). Jeśli zapiszesz te adresy na "twardo" w kodzie (tzw. hardcoding) lub ustawisz dla nich długi czas życia w cache'u (TTL), to w momencie zmiany IP przez SimPay:

* Twój sklep zablokuje prawdziwe powiadomienia o opłaceniu zamówienia.
* System nie wyda klientom towarów / usług.
* Zaczną się mnożyć skargi i zapytania do supportu.


Oszczędź sobie problemów w przyszłości i zawsze sprawdzaj adresy dynamicznie na bieżąco!