Bezpieczeństwo programu lojalnościowego brzmi jak temat dla wielkich korporacji. W rzeczywistości to także problem każdej kawiarni, salonu czy sklepu, który zaczyna zbierać dane klientów. Wystarczy jeden wyciek lub jedno niewłaściwie skonfigurowane konto admin — i masz na biurku zgłoszenie do PUODO oraz potencjalne kary RODO sięgające 4% rocznego obrotu.
W tym przewodniku rozkładamy bezpieczeństwo programu lojalnościowego na warstwy. Od miejsca, gdzie fizycznie leżą dane, przez logowanie i sesje, po prawo klienta do usunięcia swojego konta. Plus częste pułapki, w które wpadają polskie firmy wybierając tani „system” bez pytania o szczegóły techniczne.
Warstwa 1: gdzie fizycznie leżą dane
Najważniejsze pytanie. Dane osobowe twoich klientów (imię, e-mail, telefon) muszą leżeć w obszarze, gdzie RODO obowiązuje bezpośrednio — czyli w Unii Europejskiej lub w kraju z decyzją adekwatności. Jeśli dostawca trzyma dane w USA bez SCC i bez certyfikacji DPF (Data Privacy Framework), masz problem.
Pointify hostuje wszystko w UE — region Frankfurt, AWS eu-central-1. Frankfurt jest najlepiej skomunikowanym data center w Europie kontynentalnej, z niskim opóźnieniem dla Polski (~25–35 ms) i pełną zgodnością z RODO. Backupy są również w UE.
Co sprawdzić u dostawcy:
- Konkretny region cloud (Frankfurt, Irlandia, Dublin, Sztokholm — wszystkie OK).
- Backupy — gdzie? Backup w USA, choćby zaszyfrowany, to nadal transfer danych poza UE.
- Sub-procesorzy. Jeśli dostawca używa np. Mailgun do wysyłki e-maili, sprawdź, czy Mailgun ma serwery EU.
- DPA (Data Processing Agreement). Czy dostawca podpisze umowę powierzenia po polsku lub po angielsku?
Warstwa 2: logowanie — OTP zamiast haseł
Haseła są problemem. Klienci wybierają „haslo123”, używają tego samego hasła w wielu serwisach, gubią. Każde hasło to ryzyko phishingu i credentials stuffing (jeśli baza wycieknie gdzie indziej, atakujący próbuje tych samych haseł u ciebie).
Pointify używa logowania przez OTP (One-Time Password) wysyłany na e-mail. Klient wpisuje e-mail, dostaje 6-cyfrowy kod ważny przez krótki czas, loguje się. Bez hasła. Trzy zalety:
- Brak bazy haseł do wycieknięcia. Nie przechowujemy haseł — nic nie można ukraść.
- Brak credentials stuffing. Atakujący nie ma czego „wstrzykiwać”.
- Brak resetowania hasła. „Zapomniałem hasła” — najczęstsze źródło frustracji w innych aplikacjach — tu nie istnieje.
Logowanie do panelu partnera odbywa się analogicznie — OTP na e-mail biznesowy. To samo standardowo dla skanowania QR przy kasie: sesja QR (po stronie klienta) ma ograniczoną ważność (~2 minuty), żeby kod się nie „leżakowal” w aplikacji i nie został przechwycony.
Warstwa 3: JWT i odświeżanie sesji
Po zalogowaniu klient (lub partner w panelu) dostaje token JWT — krótko żyjący, podpisany kryptograficznie. Aplikacja przechowuje go bezpiecznie i wysyła do API przy każdym żądaniu. Token jest ważny przez kilkanaście minut. Refresh token (osobny, dłuższy) pozwala odnowić sesję bez ponownego logowania — typowo do 30 dni.
Co to daje w praktyce: jeśli atakujący ukradnie token aktywnej sesji (np. przez podsłuch w niezabezpieczonym Wi-Fi), token przestaje działać po kilkunastu minutach. Refresh token jest powiązany z urządzeniem i wycofujemy go natychmiast, gdy klient zażąda „wyloguj na wszystkich urządzeniach”.
Wszystkie żądania idą przez HTTPS/TLS 1.3 — bez szyfrowanego transportu nie ma sensu mówić o bezpieczeństwie. Pointify wymusza HTTPS na każdej domenie (włącznie ze stroną marketingową) przez nagłówek HSTS.
Warstwa 4: backupy i odtwarzanie
Backupy to nudna, ale krytyczna warstwa. Co się stanie, jeśli dostawca przypadkiem skasuje bazę? A jeśli ktoś z personelu „przez pomyłkę” usunie 5 tysięcy kont klientów?
Pointify wykonuje codzienne backupy z retencją 30 dni. Backupy są szyfrowane (AES-256) i przechowywane w innym fizycznym data center niż produkcja, ale w tym samym regionie UE. Odtworzenie do dowolnego punktu w czasie z ostatnich 30 dni jest możliwe.
Co sprawdzić u dostawcy:
- Częstotliwość backupów (codzienne to absolutne minimum).
- Retencja (30 dni to standard, mniej to ryzyko).
- Test odtwarzania. „Mamy backupy” bez testowanego odtwarzania to mit. Pytaj, czy wykonywany jest okresowy „drill” odtwarzania.
- Szyfrowanie backupów at rest.
Warstwa 5: prawo do bycia zapomnianym
RODO daje klientowi prawo do żądania usunięcia danych. Większość polskich firm interpretuje to jako „jak ktoś napisze, to skasujemy”. To minimum — i w praktyce każdy klient powinien móc usunąć dane samodzielnie, bez pisania petycji.
W Pointify każdy klient ma w aplikacji opcję „Usuń konto” (self-delete). Klika, potwierdza, konto jest oznaczone do usunięcia, dane są fizycznie kasowane w okresie retencji backupów (max 30 dni). Klient dostaje potwierdzenie e-mailem.
Drugie prawo — eksport danych. Klient w aplikacji może pobrać swoje dane w formacie PDF (lista transakcji, saldo punktów, historia nagród). Jednym kliknięciem. Nie czeka 30 dni na „reakcję administratora”.
Po stronie partnera (właściciela firmy) — w panelu masz audyt zgód RODO. Widzisz, kiedy klient zgodził się na regulamin, kiedy na politykę prywatności, kiedy ewentualnie cofnął zgodę. To podstawa w razie kontroli PUODO.
Warstwa 6: brak trackerów zewnętrznych
Większość „darmowych” aplikacji finansuje się danymi. Wbudowane Facebook Pixel, Google Analytics, Mixpanel, Branch, AppsFlyer — każdy z tych trackerów wysyła dane o twoich klientach (przez interfejs e-maila zaszyfrowane, ale identyfikator wciąż) do trzeciej strony, którą musisz wymienić w polityce prywatności.
Pointify nie używa zewnętrznych trackerów behawioralnych. Aplikacja klienta nie zawiera Facebook Pixel, nie integruje Google Analytics, nie raportuje do firm third-party. Logujemy minimum operacyjne (że transakcja się odbyła, kiedy, na jaką kwotę) — i ta informacja zostaje wyłącznie w naszej infrastrukturze.
Po stronie strony marketingowej (pointify.org) używamy lekkiej analityki bez ciasteczek profilujących. Brak Google Tag Managera, brak Hotjara, brak Facebook Pixel.
Warstwa 7: kontrola dostępu w firmie partnera
Wewnątrz panelu partnera (czyli twojej firmy jako biznesu w Pointify), aktualnie jest jeden poziom dostępu — administrator partnera. Każda osoba z dostępem do panelu widzi wszystkie dane firmy. To celowo proste rozwiązanie dla MŚP; pełna hierarchia ról (np. „kasjer widzi tylko skanowanie, menedżer widzi statystyki, właściciel widzi finanse”) jest na roadmapie i pojawi się w kolejnych wersjach.
W praktyce oznacza to, że dziś każdy pracownik z dostępem do panelu Pointify ma pełne uprawnienia. Polskie firmy często ten dostęp przekazują jednej zaufanej osobie (menedżer, recepcjonista), a personel obsługuje punkty tylko przez urządzenie zalogowane na ten jeden profil. To do uzgodnienia w twoim modelu operacyjnym.
Warstwa 8: incident response
Co dzieje się, jeśli wykryjemy incydent — wyciek danych, próbę włamania, podejrzaną aktywność na koncie? Procedura:
- Zespół techniczny izoluje incident (blokuje konta, rotuje klucze).
- Ocena skali — czy doszło do wycieku danych osobowych, czy nie.
- Jeśli tak: zgłoszenie do PUODO w ciągu 72 godzin (wymóg RODO).
- Powiadomienie klientów, których dane wyciekły, bezpośrednim kanałem (e-mail).
- Powiadomienie partnerów (firm), jeśli incident ich dotyczy.
- Post-mortem — co się stało, dlaczego, jak zapobiec.
To procedury, których „nie chcesz testować” — ale każdy poważny dostawca powinien je mieć opisane. Pytaj wprost.
Częste pułapki w polskich firmach
Najczęstsze błędy, które widzimy w MŚP, gdy patrzy się na ich obecny lub poprzedni system lojalnościowy:
- Tani system z hostingiem w USA. „Wybraliśmy bo najtaniej”. Bez SCC, bez certyfikacji DPF, bez DPA. Po pierwszej kontroli PUODO — duży problem.
- Brak podpisanej DPA. Klient nie ma podpisanej umowy powierzenia danych z dostawcą. RODO art. 28 mówi wyraźnie — musi być na piśmie. Bez tego administrator (czyli firma) ponosi odpowiedzialność za każdy ruch dostawcy.
- Łączenie programu z danymi medycznymi. Apteka, klinika, gabinet kosmetyczny medyczny — wszystko, co przetwarza dane o zdrowiu. Pole minowe. Pisaliśmy więcej w RODO program lojalnościowy.
- Hasła w plaintext. Tak, nadal zdarza się. Dostawca przechowuje hasła klientów niezahaszowane — wyciek bazy = katastrofa dla wszystkich klientów, którzy używają tego samego hasła gdzie indziej. Test: jeśli funkcja „Przypomnij moje hasło” wysyła ci hasło e-mailem (a nie link do reset), to system trzyma plaintext. Uciekaj.
- Brak HTTPS. Niektóre tanie systemy w 2026 nadal nie wymuszają HTTPS. Bez TLS dane lecą otwartym tekstem przez Wi-Fi w kawiarni — łatwa ofiara dla każdego z „Wireshark” na laptopie.
- Brak audytu zgód. „Wszystkie klientki zgodzili się przy zapisie” — bez timestampu, bez dowodu. W razie kontroli PUODO: brak dokumentacji = problem.
Checklist do wyboru dostawcy
Skopiuj i sprawdź przed podpisaniem umowy:
- Hosting w UE? Konkretny region?
- Backupy w UE? Częstotliwość, retencja, szyfrowanie?
- HTTPS/TLS wymuszony?
- Logowanie przez OTP albo passwordless? Jeśli hasła — czy hashowane mocnym algorytmem (bcrypt/argon2)?
- Tokeny JWT z krótkim TTL i odświeżaniem?
- Self-delete dostępne dla klienta w aplikacji?
- Eksport danych dostępny dla klienta?
- DPA do podpisania?
- Lista sub-procesorów — gdzie są zlokalizowani?
- Procedura incident response z zobowiązaniem zgłoszenia do PUODO w 72h?
- Brak zewnętrznych trackerów behawioralnych?
- Audyt zgód RODO w panelu?
Pointify spełnia wszystkie powyższe punkty. Niektóre „gotowe aplikacje” spełniają 3–4 z 12. Wybierz świadomie. Więcej o gotowych rozwiązaniach w gotowa aplikacja lojalnościowa i top 5 programów lojalnościowych.
FAQ
Czy klient widzi w aplikacji, że jego dane są w UE?
W polityce prywatności i w regulaminie jest informacja o lokalizacji danych. W samej aplikacji to nie jest standardowy widok — ale klient po zapytaniu dostaje pełną informację.
Co jeśli klient żąda usunięcia danych, ale ma nierozliczone punkty?
Usunięcie konta przerywa wszystkie aktywne sesje i kasuje saldo. Klient wie o tym przy potwierdzaniu — saldo punktów nie ma wartości pieniężnej i znika razem z kontem.
Czy administrator partnera widzi wszystkie dane klientów?
W aktualnej wersji Pointify — tak, jeden poziom dostępu. To kompromis na rzecz prostoty. Hierarchia ról jest na roadmapie.
Czy dane klientów są szyfrowane w bazie?
Tak — at rest (na dyskach) i in transit (w komunikacji). Hasła nie istnieją (OTP), e-maile i imiona są w bazie zaszyfrowanej kluczami zarządzanymi przez AWS KMS.
Co z PESELem, datą urodzenia, NIPem?
Pointify nie zbiera PESELa, daty urodzenia ani NIPa od klientów końcowych. Im mniej danych zbieramy, tym mniej do ochrony. NIP firmy partnera (do rozliczeń) — tak, w panelu biznesowym.
Czy mogę dostać raport audytowy w razie kontroli PUODO?
Tak. Na żądanie partnera generujemy listę zgód, listę dostępów, listę incydentów (jeśli wystąpiły) i konfigurację bezpieczeństwa twojego konta partnera. Polecamy mieć ten raport co najmniej raz na rok.
Co jeśli sam użytkownik mojej firmy (pracownik) wyciekł dane?
Audyt logów panelu pokazuje, kto kiedy się logował i jakie operacje wykonał. Wycofujemy dostęp tego pracownika natychmiast i pomagamy zgłosić incident.