Bezpieczeństwo Systemu SerwisRun

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.

Wersja 1.1·Opublikowano: 2026-05-08

1 Logowanie i dostęp do systemu

Jak działa logowanie?

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.

Logowanie biometryczne (odcisk palca / Face ID)

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ł.
Strona logowania SerwisRun z opcją logowania biometrycznego
Strona logowania systemu SerwisRun z przyciskiem „Zaloguj biometrycznie" (WebAuthn/FIDO2).

Ochrona przed atakami na logowanie

ZabezpieczenieJak działaDlaczego to ważne
Limit prób logowaniaMax 20 prób na 15 minut z jednego adresu IPBlokuje automatyczne odgadywanie haseł
Silne hasłaWymagane: min. 8 znaków, wielka litera, cyfra, znak specjalnyUtrudnia 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łaLink ważny 1 godzinę, jednorazowyChroni przed przechwyceniem linku resetującego
Brak informacji o kontachPrzy resecie hasła system nie zdradza, czy konto istniejeChroni przed próbami odgadnięcia, kto ma konto

2 Szyfrowanie komunikacji (transmisja danych)

Co to oznacza w praktyce?

Każda informacja przesyłana między Twoim komputerem/telefonem a serwerem jest szyfrowana protokołem HTTPS (TLS 1.2+). Oznacza to, że:

Dodatkowe nagłówki bezpieczeństwa

NagłówekCo robiPrzed czym chroni
HSTSWymusza HTTPS przez 1 rokPrzed przypadkowym użyciem niezaszyfrowanego HTTP
Content Security PolicyBlokuje ładowanie skryptów z obcych źródełPrzed atakami XSS (wstrzykiwanie złośliwego kodu)
X-Frame-Options: DENYZabrania osadzania strony w ramkachPrzed clickjackingiem (podszywanie się pod interfejs)
Referrer PolicyOgranicza informacje wysyłane do stron trzecichPrzed wyciekiem adresów URL

Kontrola dostępu między domenami (CORS)

System akceptuje żądania wyłącznie z autoryzowanych domen (np. app.serwis.cloud). Żadna inna strona internetowa nie może komunikować się z API systemu.


3 Ochrona danych w bazie danych

Ochrona przed włamaniem do bazy (SQL Injection)

SQL Injection to najczęstszy atak na bazy danych. System SerwisRun jest w 100% odporny na ten atak:

Szyfrowanie połączenia z bazą

Przechowywanie haseł

  1. Hasło przetwarzane algorytmem bcrypt (10 rund solenia)
  2. Wynik to losowy ciąg znaków — nie da się odtworzyć hasła
  3. Nawet administrator systemu nie ma dostępu do haseł
Poró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.

4 Kto widzi jakie dane? (System uprawnień)

Role i uprawnienia (RBAC)

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
PoziomCo pozwalaPrzykład
BRAKModuł niewidocznyTechnik nie widzi faktur
PODGLĄDTylko odczytPracownik przegląda umowy
EDYCJAOdczyt + tworzenie/modyfikacjaKoordynator tworzy konserwacje
USUWANIEPełny dostępAdmin zarządza wszystkim

Izolacja danych między oddziałami

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.
Zarządzanie uprawnieniami ról w systemie SerwisRun
Moduł zarządzania uprawnieniami ról — konfiguracja poziomu dostępu do każdego modułu systemu.

5 Przesyłanie plików na OneDrive

EtapZabezpieczenieSzczegóły
Przeglądarka → SerwerHTTPS + JWT tokenSzyfrowane połączenie, wymagane logowanie
Walidacja na serwerzeFiltr typów i rozmiarówZdjęcia: JPEG, PNG, WebP. Dokumenty: PDF, DOCX
Serwer → OneDriveOAuth2 + Graph APIToken z automatycznym odświeżaniem
Na OneDriveSzyfrowanie at restBitLocker + per-file encryption
Porównanie: Mechanizm OAuth2 + MSAL to ten sam sposób, w jaki Microsoft Teams i SharePoint komunikują się z OneDrive.

6 Śledzenie zmian (Dziennik audytu)

Co jest rejestrowanePrzykład
KtoJan Kowalski ([email protected])
Kiedy2026-03-18, 14:32:15
Co zrobiłZmodyfikował umowę UMW-2026-001
SkądAdres IP: 195.x.x.x
Co zmieniłPole "wartość" z 5000 na 6000 zł
Stare i nowe wartościPełna kopia przed i po zmianie
Porównanie: Dziennik audytu na tym poziomie to wymóg RODO i ISO 27001.
Dziennik audytu systemu SerwisRun
Dziennik audytu — rejestr wszystkich operacji w systemie z informacjami kto, kiedy i co zmienił.

7 Szyfrowanie sekretów integracji w bazie

Po co to robimy?

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.

Jak to działa?

ElementOpis
AlgorytmAES-256-GCM — branżowy standard szyfrowania uwierzytelnionego (poufność + integralność w jednym)
Klucz szyfrujący32-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 Tag16-bajtowy tag wykrywający manipulację — system odrzuci sekret, którego ktoś próbował zmodyfikować bezpośrednio w bazie
Co jest chronioneTokeny 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.

Procedura rotacji klucza

Jeśli zaistnieje podejrzenie wycieku INTEGRATION_SECRET_KEY, można go bezpiecznie zmienić bez utraty danych:

  1. Wygenerowanie nowego klucza i zapisanie w trybie „rotacja" (stary klucz nadal działa do odszyfrowania)
  2. Skrypt ponownie zaszyfrowuje wszystkie sekrety w bazie nowym kluczem
  3. Po zakończeniu — usunięcie starego klucza ze środowiska

Pełna procedura w dokumentacji wewnętrznej docs/SECURITY.md.


8 Izolacja środowisk DEV / DEMO / PROD

System jest wdrożony w trzech rozdzielnych środowiskach, każde z osobnym kontem Railway, osobną bazą danych i osobnymi sekretami:

ŚrodowiskoAdresDane testoweDla kogo
Lokalny devlocalhost (Docker)Wstrzykiwane (flag DEMO_MODE)Programiści
DEMOdemo.serwis.cloudWstrzykiwane (Politechnika Mazowiecka, Izba Skarbowa…)Pokazy handlowe, klienci próbni
PRODapp.serwis.cloudBrak — flaga niezależnie wyłączonaProdukcja 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.

9 Ochrona przed typowymi atakami

Rodzaj atakuChroniony?Jak?
Kradzież hasła (brute force)✅ TakRate limiting + silne hasła + bcrypt
Podsłuchiwanie transmisji✅ TakHTTPS/TLS na każdym odcinku
Wstrzyknięcie kodu SQL✅ Tak100% parametryzowane zapytania
Cross-Site Scripting (XSS)✅ TakContent Security Policy + walidacja
Clickjacking✅ TakX-Frame-Options: DENY
Kradzież sesji✅ TakToken wygasa po 8h, podpis cyfrowy
Phishing✅ TakWebAuthn (biometria odporna na phishing)
Nieautoryzowany dostęp✅ TakRBAC + izolacja oddziałów
Przeciążenie serwera (DDoS)✅ CzęściowoRate limiting (500 req/min)

10 Podsumowanie — Jaki to poziom ochrony?

ObszarOcenaPoziom 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.