Bezpieczeństwo
Jak chronimy Twoje dane w costwise.pro
Bezpieczeństwo nie jest u nas dodatkiem — jest wpisane w architekturę platformy. Poniżej opisujemy, jakie mechanizmy realnie działają w produkcji oraz co Twoja firma może zrobić dodatkowo, aby jeszcze bardziej zwiększyć poziom ochrony swoich danych.
Co robimy po naszej stronie
Izolacja wielu tenantów (multi-tenant)
Każda firma korzystająca z platformy działa w ramach osobnego tenanta identyfikowanego przez tenant_id. Wszystkie kluczowe tabele w bazie mają włączone Row-Level Security (RLS), a polityki dostępu porównują tenant_id zalogowanego użytkownika z tenant_id rekordu. Dzięki temu użytkownik jednej firmy nie ma technicznej możliwości odczytania danych innej firmy — nawet w przypadku błędu w warstwie aplikacji.
Uwierzytelnianie i zarządzanie sesją
Logowanie oparte jest o e-mail i hasło oraz opcjonalnie logowanie Google (OAuth). Sesje użytkowników są zarządzane po stronie backendu, a tokeny odświeżane automatycznie. Nie obsługujemy otwartej rejestracji — konta powstają wyłącznie przez zaproszenie, ręczne utworzenie przez administratora lub zakup planu. Zaproszenia mają ograniczoną ważność (7 dni), a jednorazowy link można wykorzystać tylko raz.
Polityka haseł
Minimalna długość hasła to 8 znaków. Hasła tymczasowe generowane przy tworzeniu konta mają 12 znaków i wymuszają zmianę przy pierwszym logowaniu — do czasu zmiany hasła użytkownik nie ma dostępu do dashboardu. Hasła nie są przechowywane w postaci jawnej.
Role i uprawnienia
Role użytkowników (m.in. Admin, Manager, Controller, Finance, User) są przechowywane w osobnej tabeli — nigdy w profilu użytkownika — co zapobiega atakom typu privilege escalation. Widoczność danych finansowych ograniczona jest wyłącznie do ról Admin, Manager, Controller i Finance. Superadmin platformy operuje w osobnej przestrzeni i nie ma bezpośredniego dostępu do danych operacyjnych tenantów.
Walidacja i weryfikacja plików
Wgrywane pliki są ograniczone do 5 MB. Typ pliku sprawdzamy nie tylko po rozszerzeniu, ale również przez weryfikację tzw. magic bytes — nagłówka binarnego pliku. Obrazy są dodatkowo skalowane po stronie klienta do maksymalnej szerokości 1600 px, co ogranicza ryzyko przesyłania „ciężkich" plików i utrudnia ukrycie treści w metadanych.
Bezpieczna warstwa API (edge functions)
Operacje wrażliwe biegną przez edge functions, które jawnie walidują wejście, zwracają błędy w ustrukturyzowanym formacie i nigdy nie ujawniają wewnętrznych identyfikatorów projektu. Klucze serwisowe backendu nie są dostępne po stronie klienta — nawet dla administratora tenanta.
PWA bez ukrytego cache
Aplikacja działa jako PWA, ale świadomie nie używa Service Workerów ani agresywnego cache — dane pobierane są zawsze świeżo z backendu. To ogranicza ryzyko wyświetlenia użytkownikowi nieaktualnych danych oraz sytuacji, w której stare dane pozostają w przeglądarce po wylogowaniu.
Ochrona przed XSS w treściach dynamicznych
Diagramy generowane przez Mermaid.js działają w trybie „strict", co blokuje wykonanie potencjalnie złośliwego kodu HTML/JavaScript osadzonego w treści. Kontent użytkownika jest renderowany przez framework, a nie przez surowe wstrzykiwanie HTML.
E-maile transakcyjne i klucze API
Wysyłka e-maili opiera się o Resend. Model jest dwupoziomowy: tenant może użyć własnego klucza Resend, który nadpisuje klucz globalny. Klucze API są przechowywane po stronie backendu i nie są nigdy zwracane do przeglądarki.
Uwierzytelnianie dwuskładnikowe (2FA)
Każdy użytkownik w Twoim tenantcie może włączyć w ustawieniach konta uwierzytelnianie dwuskładnikowe oparte o TOTP. Generowane są kody zapasowe do odzyskiwania dostępu, a administrator może zresetować MFA użytkownika w razie utraty urządzenia. Wymuszenie 2FA — zwłaszcza dla ról Admin, Manager, Controller i Finance — istotnie zmniejsza ryzyko przejęcia konta.
Zgodność z RODO / GDPR
Platforma działa zgodnie z zasadami RODO: podstawa prawna, minimalizacja danych, ograniczenie celu oraz prawa użytkowników (dostęp, sprostowanie, usunięcie, przenoszalność). Umowa powierzenia przetwarzania danych (DPA) jest dostępna na żądanie. Dane osobowe pozostają w Twoim tenantcie i nie są używane do trenowania współdzielonych modeli ani udostępniane innym klientom.
Hosting danych i lokalizacja
Aplikacja i baza danych działają na zarządzanej infrastrukturze chmurowej hostowanej w Unii Europejskiej. Szyfrowanie w tranzycie (HTTPS/TLS) wymuszane jest end-to-end między przeglądarką, edge functions i bazą danych. Klucze serwisowe backendu nigdy nie opuszczają strony serwera.
Backupy i odzyskiwanie po awarii
Poza tenantowym modułem Backupów, bazowa zarządzana baza danych wykonuje automatyczne snapshoty realizowane przez dostawcę infrastruktury. W połączeniu z Twoim ręcznym eksportem do JSON oraz opcjonalną zewnętrzną bazą daje to kilka niezależnych ścieżek odzyskiwania danych.
Log audytowy
Czynności administracyjne i operacje wrażliwe są zapisywane w logu audytowym (logi akcji administratora, ślad audytu bezpieczeństwa, log audytowy faktur). Konsola superadmina udostępnia dedykowany widok Security Audit, w którym zdarzenia można przeglądać, filtrować i analizować w czasie.
Eksport i usuwanie danych (prawo do bycia zapomnianym)
Administratorzy tenanta mogą w każdej chwili wyeksportować dane przez moduł Backupów (eksport JSON). Sekcja Danger Zone w ustawieniach pozwala usunąć konto i dane tenanta, co realizuje prawo do usunięcia danych zgodnie z RODO. Usunięcie wymaga jawnego potwierdzenia, aby zapobiec przypadkowej utracie danych.
Co Twoja firma może zrobić dodatkowo
Bezpieczeństwo to zawsze współodpowiedzialność. Poniżej wymieniamy narzędzia i praktyki, które udostępniamy w platformie i które warto włączyć u siebie.
Regularne backupy Twoich danych
W panelu ustawień masz dostęp do modułu Backupów. Możesz w każdej chwili wykonać ręczny eksport danych do pliku JSON i pobrać go lokalnie, a także skonfigurować automatyczny harmonogram backupów (dzienny, tygodniowy, miesięczny). Historia wykonanych backupów jest widoczna w tabeli i pozwala szybko odtworzyć wybrany snapshot. Rekomendujemy trzymanie kopii również poza platformą — np. w firmowym repozytorium plików.
Własna, zewnętrzna baza danych
Dla firm, które wymagają pełnej kontroli nad danymi, udostępniamy moduł External Database. Możesz podłączyć własną bazę PostgreSQL, SQL Server lub SQLite (przez proxy) i skierować krytyczne dane do swojej infrastruktury. Konfiguracja i test połączenia dostępne są w ustawieniach — moduł jest ograniczony wyłącznie do roli Admin, a instrukcje konfiguracji dostarczamy w kilku językach.
Higiena kont i dostępów
Twórz konta wyłącznie przez zaproszenia (nie udostępniaj jednego konta wielu osobom). Nadawaj role zgodnie z zasadą minimalnych uprawnień — użytkownik potrzebujący tylko wglądu w statystyki nie powinien mieć roli Admin. Regularnie przeglądaj listę aktywnych użytkowników i dezaktywuj konta osób, które opuściły organizację.
Silne hasła i zmiana pierwszego hasła
Wymuś w organizacji stosowanie haseł znacznie dłuższych niż minimum systemowe (rekomendujemy 12+ znaków, unikatowe dla platformy). Nie odkładaj zmiany hasła tymczasowego — do czasu jego zmiany dostęp do dashboardu jest zablokowany, co jest bezpiecznym domyślnym zachowaniem, ale nie zastępuje regularnej rotacji.
Najczęściej zadawane pytania
Zgłoś incydent lub podatność
Jeśli zauważyłeś podejrzane zachowanie platformy lub potencjalną podatność bezpieczeństwa, skorzystaj z formularza kontaktowego. Traktujemy takie zgłoszenia priorytetowo.
Strona utrzymywana przez zespół costwise.pro. Opisujemy wyłącznie mechanizmy i funkcjonalności, które są realnie dostępne w platformie. Nie jest to certyfikat ani niezależny audyt — jest to opis obowiązujących praktyk i konfiguracji.