Przejdź do głównej zawartości

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 Secure i HttpOnly, 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.

Minimalizacja

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.