Bezpieczeństwo i prywatność
Splot przetwarza dane osobowe gości i operacyjne dane wydarzeń. Ma granice tenantów, event-scoped dostęp pary, audyt wrażliwych działań, eksport oraz offboarding unieważniający sesje. Przed szerokim uruchomieniem nadal wymaga zatwierdzonej polityki retencji i skonfigurowanych alertów.
Granica organizacji
Każde wesele należy do organizacji. API buduje zapytania przez członkostwo aktualnego użytkownika. Identyfikator zasobu nie wystarcza do odczytu ani zmiany rekordu z innego tenantu.
Testy automatyczne obejmują między innymi próbę przypisania do gospodarstwa osoby z innej organizacji.
Sesje operatorów
Splot używa długich, nieprzewidywalnych bearer tokenów, a nie JWT. Baza przechowuje tylko skrót tokenu, datę ważności, właściciela i etykietę urządzenia.
- Web: token znajduje się w cookie
SecureiHttpOnly, używanym po stronie serwera Next.js. - iOS: token znajduje się w systemowym Keychain.
- Wylogowanie usuwa bieżący token z bazy.
- Wygasłe tokeny są odrzucane.
- Nieudane logowania są liczone dla pary e-mail + adres klienta, bez zapisywania jawnego identyfikatora.
- Odbieranie dostępu usuwa członkostwo albo grant wydarzenia i unieważnia tokeny użytkownika.
Token gościa
Token gospodarstwa ma węższy zakres niż sesja operatora. Pozwala wyłącznie:
- odczytać portal konkretnego gospodarstwa;
- wysłać RSVP osób należących do tego gospodarstwa.
Jest losowy, zapisany jako SHA-256, rotowalny i wygasający. Portal można wyłączyć dla całego wesela.
Dane szczególnej uwagi
Notatki dietetyczne, alergie, dostępność, noclegi i telefony powinny być widoczne tylko osobom, które potrzebują ich do realizacji. Nie umieszczaj ich na publicznych planach stołów ani wydrukach dla gości.
W polu dostępności zapisuj potrzebę operacyjną, np. „dostęp bez schodów”, a nie diagnozę medyczną. Zbieraj tylko dane potrzebne do usługi.
Ochrona warstwy HTTP
Host Caddy wymusza HTTPS i ustawia między innymi:
- HSTS;
X-Content-Type-Options: nosniff;X-Frame-Options: DENY;Referrer-Policy: strict-origin-when-cross-origin;- blokadę kamery, mikrofonu i geolokalizacji w Permissions Policy.
Zabezpieczenia aplikacyjne
- walidacja danych przez schematy Django Ninja;
- transakcje dla tworzenia gospodarstwa i RSVP;
- kontrola roli przy mutacjach;
- blokada check-inu dla niezaakceptowanej osoby;
- termin RSVP i termin tokenu;
- konflikt rewizji przy równoległej zmianie kartoteki;
- brak produkcyjnego auto-seedowania danych demo.
Przed szeroką produkcją
- polityka prywatności i umowy powierzenia;
- zatwierdzona retencja po wydarzeniu i panel polityki organizacji;
- konfiguracja Sentry DSN, alertów i procedury eskalacji;
- rate limiting portalu gościa oraz mutacji;
- procedura utraty urządzenia i resetu hasła;
- cykliczna próba odtworzenia backupu;
- skanowanie plików przed uruchomieniem galerii.
Aktualny stan wdrożenia opisuje Status produktu.