Przegląd bezpieczeństwa

Twoje dane zostają tam, gdzie powinny.

Podsumowanie dla osób oceniających IT i bezpieczeństwo: jak wdraża się SnagBane, jak kontroluje dostęp, jak jest zabezpieczony i co dokładnie opuszcza Twój serwer.

Wdrożenie i dane

  • Na własnym serwerze. SnagBane to oprogramowanie, które instalujesz w Dockerze, na VPS lub w cPanel. Formularze, odpowiedzi, pliki i konta są przechowywane w Twojej własnej bazie danych (MySQL/MariaDB, PostgreSQL lub SQLite) i w Twoim własnym magazynie plików.
  • Żadnych wspólnych domyślnych haseł. Baza danych w Dockerze startuje z hasłem instalacyjnym, które instalator zastępuje silnym losowym hasłem; php artisan snagbane:db-password zmienia je później.
  • Prywatny magazyn plików poza katalogiem głównym serwera WWW, z losowymi nazwami plików.
  • Działa w sieci wewnętrznej. Plan Free nie potrzebuje dostępu do internetu; Business i Enterprise wymagają wychodzącego HTTPS do sprawdzania licencji.

Tożsamość i dostęp

  • Logowanie jednokrotne z Microsoft Entra ID, Google Workspace, Okta i dowolnym dostawcą tożsamości SAML 2.0, takim jak AD FS czy Ping (Business i Enterprise) – tylko podpisane odpowiedzi SAML na logowania rozpoczęte przez SnagBane, każda przyjmowana jeden raz. Logowania z katalogu nigdy nie tworzą administratorów, a mapowanie ról z grup może rolę tylko podnieść.
  • Weryfikacja dwuetapowa dla kont SnagBane: aplikacja uwierzytelniająca (jej klucz konfiguracji można zapisać w menedżerze haseł) albo klucze bezpieczeństwa FIDO2 i klucze dostępu — YubiKey, Windows Hello, Menedżer haseł Google, pęk kluczy iCloud. Najpierw prosimy o najsilniejszą metodę; jednorazowe kody odzyskiwania są drogą powrotu, nigdy samo hasło. Może być wymagana dla administratorów, a administrator może zażądać ponownej konfiguracji.
  • Blokada konta po powtarzających się nieudanych logowaniach – także dla nieznanych adresów e-mail, więc nie da się odgadnąć, które konta istnieją – rygorystyczne zasady haseł i haszowanie bcrypt.
  • Role i obszary robocze: właściciele, administratorzy, edytorzy, czytelnicy i respondenci; reguły dostępu dla każdego formularza, portalu i obszaru roboczego. Odwiedzający bez dostępu widzą tylko tytuł i opis, nigdy pytań.
  • Nowe osoby domyślnie nie dostają uprawnień do edycji – domyślną rolą jest respondent.

Bezpieczeństwo aplikacji

  • Ścisła polityka Content Security Policy z jednorazowymi wartościami nonce dla każdego żądania, ochrona przed clickjackingiem, HSTS przy HTTPS, nosniff i polityka referrer. Ochrona przed CSRF i przejęciem sesji (session fixation).
  • Przesyłane pliki są sprawdzane według listy dozwolonych rozszerzeń i analizy zawartości; skrypty, pliki wykonywalne, SVG/HTML i podwójne rozszerzenia są blokowane.
  • Ochrona przed SSRF dla każdego webhooka i każdej integracji: adresy prywatne i adresy metadanych są blokowane (odporność na DNS rebinding), z listą dozwolonych zaufanych hostów wewnętrznych, którą prowadzi administrator.
  • Szyfrowane klucze tajne kluczem Twojej aplikacji. Tokeny API, linki do zatwierdzania oraz linki do edycji i wznawiania są przechowywane wyłącznie jako skróty (hash).
  • Walidacja po stronie serwera każdej odpowiedzi, każdej ścieżki rozgałęzień i każdego obliczenia; odpowiedzi do quizów nigdy nie trafiają do przeglądarki; wstrzykiwanie formuł jest neutralizowane w eksportach do CSV, Excela i Arkuszy Google.
  • Linki budowane z Twojego skonfigurowanego adresu, nigdy z nagłówka Host żądania.

Monitorowanie i audyt

  • Dziennik inspekcji logowań, działań administracyjnych, eksportów i decyzji o zatwierdzeniu, w tym kto zmienił osobę zatwierdzającą i dlaczego.
  • Przesyłanie do SIEM: każdy wpis jest też zapisywany jako jedna płaska linia JSON w pliku dziennym, gotowym dla Microsoft Sentinel, Elastic lub Splunk Universal Forwarder. Eksport do CSV lub JSON Lines.
  • Podpisane webhooki (HMAC-SHA256 ze znacznikiem czasu), dzięki czemu odbiorcy mogą zweryfikować każde wywołanie.

Aktualizacje i łańcuch dostaw

  • Podpisane aktualizacje: każde wydanie jest weryfikowane kluczem Ed25519 przed instalacją i stosowane w trybie konserwacji, z przywróceniem poprzedniej wersji jednym kliknięciem.
  • Czyste aktualizacje: pliki usunięte w danym wydaniu znikają też z Twojego serwera, więc zaktualizowana instalacja jest taka sama jak nowa.
  • Dowody licencji są podpisywane i weryfikowane kluczem wbudowanym w aplikację – żadne ustawienie środowiska nie odblokuje płatnego planu.

Ustawienia, które kontrolujesz

Bezpieczne ustawienia domyślne działają od razu. W sekcji Ustawienia → Bezpieczeństwo możesz je dodatkowo zaostrzyć:

  • Obowiązkowa weryfikacja dwuetapowa dla administratorów
  • Minimalna długość hasła (wielkie i małe litery oraz cyfry są zawsze wymagane) i czas trwania sesji
  • Dozwolone rozszerzenia plików i maksymalny rozmiar przesyłanych plików
  • Dozwolone hosty prywatne dla webhooków i integracji – wszystko inne wewnętrzne jest blokowane
  • Lokalizacje i konta w SharePoint, OneDrive i na Dysku Google, z których mogą korzystać edytorzy (administratorzy mogą wybrać dowolne)
  • Czy konta Microsoft, Google i Okta mogą też używać hasła; konta wyłączone w Entra ID lub Google Workspace nie mogą się już nim logować
  • Zapisywanie każdej odpowiedzi do pliku dziennika JSON dla Twojego kolektora logów
  • Przechowywanie danych: automatyczne usuwanie starych odpowiedzi po wybranym okresie (zobacz RODO)
Ustawienia → Bezpieczeństwo

Architektura

Jedna aplikacja internetowa na Twoim serwerze – bez naszej usługi chmurowej na drodze Twoich danych.

  • Aplikacja: PHP 8.3+ (Laravel) za Twoim serwerem WWW lub obraz Dockera. Aplikacja w przeglądarce pochodzi z tego samego adresu; nie są ładowane skrypty, czcionki ani CDN firm trzecich, a Content-Security-Policy dopuszcza wyłącznie Twój serwer.
  • Baza danych: MySQL/MariaDB, PostgreSQL lub SQLite – formularze, odpowiedzi, zatwierdzenia, konta i ustawienia. Hasła i klucze API integracji są szyfrowane własnym kluczem instalacji (APP_KEY).
  • Pliki: przesłane pliki, podpisy i wygenerowane PDF-y w folderze storage, poza katalogiem głównym serwera WWW, z losowymi nazwami; udostępniane dopiero po sprawdzeniu dostępu.
  • Harmonogram: jeden wpis cron (schedule:run co minutę) wysyła przypomnienia, stosuje zasady przechowywania i sprawdza aktualizacje oraz licencję.
  • Adresy publiczne: formularze (/f/…), portale (/p/…), linki do zatwierdzania (/approve/…) i potwierdzenia (/r/…) – każdy sprawdza własną regułę dostępu lub podpisany token. Cała reszta (/app, /api) wymaga zalogowanego konta; REST API (Business i Enterprise) i SCIM (Enterprise) wymagają tokenów.
  • Kopie zapasowe należą do Ciebie: baza danych i folder storage, w tym storage/.env z kluczem, który odszyfrowuje zapisane klucze tajne.

Co opuszcza Twój serwer

SnagBane nie ma analityki ani telemetrii. Sam z siebie nawiązuje tylko te połączenia:

PołączenieCo jest wysyłaneDokądKiedy
Sprawdzanie aktualizacjiEdycja, wersja, wersja PHP i adres witryny. Z licencją także: klucz licencyjny, identyfikator instalacji Freemius i losowy identyfikator instalacjiUsługa aktualizacji SnagBane (Cloudflare)Codziennie i gdy sprawdza administrator; można wyłączyć przez SNAGBANE_UPDATES=false
Pobranie aktualizacjiTylko żądanie podpisanego pakietuUsługa aktualizacji SnagBaneGdy administrator instaluje aktualizację
Aktywacja licencji (Business, Enterprise)Klucz licencyjny, losowy identyfikator instalacji, adres i nazwa witryny, wersja oraz imię i nazwisko i e-mail administratora, który aktywujeFreemius (nasz sprzedawca)Raz, przy dodawaniu licencji
Sprawdzanie licencji (Business, Enterprise)Klucz licencyjny, identyfikator instalacji Freemius, losowy identyfikator instalacji i wersjaFreemius i usługa licencyjna SnagBaneCodziennie; co godzinę, dopóki sprawdzenie się nie powiedzie

A te – tylko jeśli je skonfigurujesz:

Co włączaszCo jest wysyłaneDokąd
E-mailPowiadomienia, prośby o zatwierdzenie i potwierdzeniaUsługa pocztowa, którą konfigurujesz (SMTP lub API)
Logowanie i katalogŻądania logowania; odczyty katalogu dla selektorów osób, przełożonych i grupMicrosoft Entra ID, Google Workspace, Okta lub Twój dostawca tożsamości SAML
Integracje i webhookiOdpowiedzi i pliki, które każda z nich ma wysłaćUsługi, które łączysz, przy wybranych zdarzeniach
Płatności w formularzachKwota, waluta, za co jest płatność i e-mail respondenta, jeśli jest znany – nigdy dane kartyStripe lub PayPal
Dziennik inspekcji do Twojego SIEMWpisy dziennika inspekcjiTwój Sentinel, Splunk, Elastic lub endpoint HTTPS
Tłumaczenie maszynoweTeksty formularzy, które zlecasz do tłumaczeniaDeepL, Azure, Google lub LibreTranslate
Powiadomienia aplikacji na telefonPusty sygnał wybudzenia – telefon pobiera potem powiadomienie z Twojego serweraUsługa push przeglądarki danej osoby
Import formularza z linkuJedno żądanie publicznej strony tego formularzaGoogle Forms lub Microsoft Forms, gdy edytor importuje formularz
Opcje z listyJedno żądanie listyAdres CSV, lista SharePoint, tabela Excela lub arkusz Google, który łączysz

Dokumenty dla osób oceniających

Nie deklarujemy certyfikatów takich jak ISO 27001 czy SOC 2: SnagBane działa w Twojej infrastrukturze, objęty Twoimi kontrolami i audytami.

Pytania osób oceniających

Czy można go uruchomić bez dostępu do internetu?

W planie Free tak – niczego nie potrzeba. Business i Enterprise wymagają wychodzącego HTTPS, aby co najmniej co 2 dni odnawiać dowód licencji; formularze, odpowiedzi i zatwierdzenia działają dalej, nawet gdy płatne funkcje są wstrzymane.

Kto widzi odpowiedzi?

Tylko osoby, którym dasz dostęp do obszaru roboczego formularza, oraz osoby zatwierdzające – w przypadku przypisanych im wniosków. Osoby zatwierdzające otwierają pliki przez swoje zatwierdzenie, nigdy przez publiczny link.

Jak konfiguruje się uprawnienia Microsoft 365?

W Twojej własnej dzierżawie: zalecany skrypt PowerShell tworzy tam rejestrację aplikacji, więc widzisz każde uprawnienie i nim zarządzasz. Zobacz uprawnienia.

Jak przesłać dziennik inspekcji do Sentinel lub Splunk?

W planie Enterprise SnagBane wysyła go bezpośrednio do Microsoft Sentinel, Splunk, Elastic lub dowolnego endpointu HTTPS. Możesz też skierować kolektor na dzienne pliki JSON Lines w storage/logs/audit. Zobacz przewodnik SIEM.

Jak zgłosić problem z bezpieczeństwem?

Napisz do nas zgodnie z polityką zgłaszania podatności. Prosimy nie otwierać najpierw publicznego zgłoszenia.

Gdzie są kopie zapasowe?

Tam, gdzie robisz kopie zapasowe serwera: baza danych i folder storage. SnagBane nie przechowuje kopii nigdzie indziej.