Ten dokument opisuje w przystępny sposób, jak system SerwisRun chroni Twoje dane — od momentu logowania, przez codzienną pracę, aż po przechowywanie plików w chmurze.
Po wpisaniu loginu i hasła system generuje cyfrowy identyfikator sesji (tzw. token JWT), który działa jak jednorazowa przepustka. Ta przepustka:
Porównanie: To ten sam mechanizm, jakiego używają banki internetowe i systemy takie jak Google Workspace czy Microsoft 365.
System obsługuje WebAuthn/FIDO2 — międzynarodowy standard logowania biometrycznego:
Porównanie: To ten sam standard, jakiego używają Google, Apple, Microsoft i banki (np. ING, mBank). Jest uznawany za najbezpieczniejszą dostępną metodę logowania — odporna na phishing i kradzież haseł.
| Zabezpieczenie | Jak działa | Dlaczego to ważne |
|---|---|---|
| Limit prób logowania | Max 20 prób na 15 minut z jednego adresu IP | Blokuje automatyczne odgadywanie haseł |
| Silne hasła | Wymagane: min. 8 znaków, wielka litera, cyfra, znak specjalny | Utrudnia złamanie hasła |
| Szyfrowanie haseł | Hasła przechowywane w formie nieodwracalnej (bcrypt, 10 rund) | Nawet administrator nie zna Twojego hasła |
| Bezpieczny reset hasła | Link ważny 1 godzinę, jednorazowy | Chroni przed przechwyceniem linku resetującego |
| Brak informacji o kontach | Przy resecie hasła system nie zdradza, czy konto istnieje | Chroni przed próbami odgadnięcia, kto ma konto |
Każda informacja przesyłana między Twoim komputerem/telefonem a serwerem jest szyfrowana protokołem HTTPS (TLS 1.2+). Oznacza to, że:
| Nagłówek | Co robi | Przed czym chroni |
|---|---|---|
| HSTS | Wymusza HTTPS przez 1 rok | Przed przypadkowym użyciem niezaszyfrowanego HTTP |
| Content Security Policy | Blokuje ładowanie skryptów z obcych źródeł | Przed atakami XSS (wstrzykiwanie złośliwego kodu) |
| X-Frame-Options: DENY | Zabrania osadzania strony w ramkach | Przed clickjackingiem (podszywanie się pod interfejs) |
| Referrer Policy | Ogranicza informacje wysyłane do stron trzecich | Przed wyciekiem adresów URL |
System akceptuje żądania wyłącznie z autoryzowanych domen (np. app.serwis.cloud). Żadna inna strona internetowa nie może komunikować się z API systemu.
SQL Injection to najczęstszy atak na bazy danych. System SerwisRun jest w 100% odporny na ten atak:
ILIKE z parametramiPorównanie: Bcrypt to ten sam algorytm, jakiego używają Dropbox, GitHub i Slack. 10 rund solenia oznacza, że próba złamania hasła metodą brute-force zajęłaby dziesiątki lat.
Administrator
└── widzi i może wszystko
Sub-admin oddziału
└── pełny dostęp, ale tylko w swoim oddziale
Technik / Pracownik
└── dostęp tylko do przypisanych modułów
Konto demo
└── ograniczony podgląd, max 50 rekordów
| Poziom | Co pozwala | Przykład |
|---|---|---|
| BRAK | Moduł niewidoczny | Technik nie widzi faktur |
| PODGLĄD | Tylko odczyt | Pracownik przegląda umowy |
| EDYCJA | Odczyt + tworzenie/modyfikacja | Koordynator tworzy konserwacje |
| USUWANIE | Pełny dostęp | Admin zarządza wszystkim |
Jeśli firma ma wiele oddziałów, każdy oddział widzi tylko swoje dane. Filtrowanie odbywa się na poziomie bazy danych.
Porównanie: To mechanizm multi-tenant isolation znany z systemów takich jak Salesforce czy HubSpot.
| Etap | Zabezpieczenie | Szczegóły |
|---|---|---|
| Przeglądarka → Serwer | HTTPS + JWT token | Szyfrowane połączenie, wymagane logowanie |
| Walidacja na serwerze | Filtr typów i rozmiarów | Zdjęcia: JPEG, PNG, WebP. Dokumenty: PDF, DOCX |
| Serwer → OneDrive | OAuth2 + Graph API | Token z automatycznym odświeżaniem |
| Na OneDrive | Szyfrowanie at rest | BitLocker + per-file encryption |
Porównanie: Mechanizm OAuth2 + MSAL to ten sam sposób, w jaki Microsoft Teams i SharePoint komunikują się z OneDrive.
| Co jest rejestrowane | Przykład |
|---|---|
| Kto | Jan Kowalski ([email protected]) |
| Kiedy | 2026-03-18, 14:32:15 |
| Co zrobił | Zmodyfikował umowę UMW-2026-001 |
| Skąd | Adres IP: 195.x.x.x |
| Co zmienił | Pole "wartość" z 5000 na 6000 zł |
| Stare i nowe wartości | Pełna kopia przed i po zmianie |
Porównanie: Dziennik audytu na tym poziomie to wymóg RODO i ISO 27001.
System przechowuje dane logowania do integracji zewnętrznych (Google Calendar, Gmail, OneDrive, KSeF, IPfon, SMSAPI, Anthropic Claude). Aby zminimalizować skutki potencjalnego wycieku bazy danych, każdy taki sekret jest zaszyfrowany na poziomie aplikacji przed zapisaniem — nawet bezpośredni dostęp do bazy nie wystarczy do ich odczytania.
| Element | Opis |
|---|---|
| Algorytm | AES-256-GCM — branżowy standard szyfrowania uwierzytelnionego (poufność + integralność w jednym) |
| Klucz szyfrujący | 32-bajtowy klucz INTEGRATION_SECRET_KEY trzymany w zmiennych środowiskowych Railway — nie w bazie |
| IV (initialization vector) | 12 bajtów losowych dla każdego rekordu — gwarantuje, że ten sam sekret w różnych wierszach ma różne kryptogramy |
| Auth Tag | 16-bajtowy tag wykrywający manipulację — system odrzuci sekret, którego ktoś próbował zmodyfikować bezpośrednio w bazie |
| Co jest chronione | Tokeny OAuth (access + refresh), klucze API, hasła SMTP, tokeny webhooków VoIP, klucz API Claude, sekrety SMSAPI |
Porównanie: AES-256-GCM to ten sam algorytm, którego używają WhatsApp (Signal Protocol), Google (Cloud KMS) i Apple (iCloud Keychain). Klucze trzymane oddzielnie od danych = nawet wykradzenie zrzutu bazy nie ujawni sekretów.
Jeśli zaistnieje podejrzenie wycieku INTEGRATION_SECRET_KEY, można go bezpiecznie zmienić bez utraty danych:
Pełna procedura w dokumentacji wewnętrznej docs/SECURITY.md.
System jest wdrożony w trzech rozdzielnych środowiskach, każde z osobnym kontem Railway, osobną bazą danych i osobnymi sekretami:
| Środowisko | Adres | Dane testowe | Dla kogo |
|---|---|---|---|
| Lokalny dev | localhost (Docker) | Wstrzykiwane (flag DEMO_MODE) | Programiści |
| DEMO | demo.serwis.cloud | Wstrzykiwane (Politechnika Mazowiecka, Izba Skarbowa…) | Pokazy handlowe, klienci próbni |
| PROD | app.serwis.cloud | Brak — flaga niezależnie wyłączona | Produkcja klientów |
Migracje, które wstrzykują dane testowe (147, 148, 261), same się pomijają jeśli flaga DEMO_MODE nie jest ustawiona na true. Dzięki temu produkcja nigdy nie zostanie zanieczyszczona danymi demo, nawet w razie pomyłki przy wdrażaniu.
Dla klienta: Twoje dane są w środowisku PROD. Nikt z testerów ani prezenterów nie ma do nich dostępu. Środowisko DEMO ma własny zestaw fikcyjnych danych firm i klientów.
| Rodzaj ataku | Chroniony? | Jak? |
|---|---|---|
| Kradzież hasła (brute force) | ✅ Tak | Rate limiting + silne hasła + bcrypt |
| Podsłuchiwanie transmisji | ✅ Tak | HTTPS/TLS na każdym odcinku |
| Wstrzyknięcie kodu SQL | ✅ Tak | 100% parametryzowane zapytania |
| Cross-Site Scripting (XSS) | ✅ Tak | Content Security Policy + walidacja |
| Clickjacking | ✅ Tak | X-Frame-Options: DENY |
| Kradzież sesji | ✅ Tak | Token wygasa po 8h, podpis cyfrowy |
| Phishing | ✅ Tak | WebAuthn (biometria odporna na phishing) |
| Nieautoryzowany dostęp | ✅ Tak | RBAC + izolacja oddziałów |
| Przeciążenie serwera (DDoS) | ✅ Częściowo | Rate limiting (500 req/min) |
| Obszar | Ocena | Poziom porównywalny z |
|---|---|---|
| Logowanie i hasła | ⭐⭐⭐⭐⭐ | Bankowość elektroniczna |
| Szyfrowanie transmisji | ⭐⭐⭐⭐⭐ | Sklepy e-commerce, banki |
| Ochrona bazy danych | ⭐⭐⭐⭐⭐ | Systemy enterprise (SAP, Salesforce) |
| Szyfrowanie sekretów integracji | ⭐⭐⭐⭐⭐ | WhatsApp, Apple iCloud Keychain (AES-256-GCM) |
| Izolacja środowisk | ⭐⭐⭐⭐⭐ | Trzy rozdzielne instancje + flag DEMO_MODE |
| System uprawnień | ⭐⭐⭐⭐⭐ | Systemy klasy enterprise |
| Przesyłanie plików | ⭐⭐⭐⭐ | Standardy Microsoft 365 |
| Dziennik audytu | ⭐⭐⭐⭐⭐ | Zgodność z RODO i ISO 27001 |
| Ochrona przed atakami | ⭐⭐⭐⭐ | Rekomendacje OWASP Top 10 |
System SerwisRun stosuje zabezpieczenia na poziomie porównywalnym z bankowością elektroniczną i systemami klasy enterprise.