I suoi dati restano dove devono stare.
Una sintesi per i responsabili IT e sicurezza: come si installa SnagBane, come controlla gli accessi, come è protetto e cosa esce esattamente dal suo server.
Installazione e dati
- Self-hosted. SnagBane è un software che installa con Docker, su un VPS o su cPanel. Moduli, risposte, file e account sono salvati nel suo database (MySQL/MariaDB, PostgreSQL o SQLite) e nel suo storage.
- Nessuna password predefinita condivisa. Il database Docker parte con una password di installazione che l’installer sostituisce con una password casuale robusta;
php artisan snagbane:db-passwordla cambia in seguito. - Archiviazione privata dei file fuori dalla root web, con nomi di file casuali.
- Funziona su una rete interna. Il piano Free non richiede accesso a internet; Business ed Enterprise richiedono HTTPS in uscita per il controllo della licenza.
Identità e accesso
- Single sign-on con Microsoft Entra ID, Google Workspace, Okta e qualsiasi identity provider SAML 2.0 come AD FS o Ping (Business ed Enterprise): solo risposte SAML firmate ad accessi avviati da SnagBane, ciascuna accettata una sola volta. Gli accessi dalla directory non creano mai amministratori, e l’assegnazione dei ruoli tramite gruppi può solo innalzare un ruolo.
- Verifica in due passaggi per gli account SnagBane: un’app di autenticazione (la sua chiave di configurazione può andare in un gestore di password) o chiavi di sicurezza FIDO2 e passkey — YubiKey, Windows Hello, Gestore delle password di Google, Portachiavi iCloud. Viene chiesto prima il metodo più forte; i codici di recupero monouso sono la via d’uscita, mai la sola password. Può essere obbligatoria per gli amministratori, e un amministratore può chiedere di configurarla di nuovo.
- Blocco dell’account dopo ripetuti accessi falliti (anche per indirizzi sconosciuti, così gli account non si possono scoprire), regole rigorose sulle password e hashing bcrypt.
- Ruoli e aree di lavoro: proprietari, amministratori, editor, lettori e rispondenti; regole di accesso per modulo, portale e area di lavoro. I visitatori senza accesso vedono solo titolo e descrizione, mai le domande.
- Le nuove persone non hanno diritti di modifica per impostazione predefinita: il ruolo predefinito è rispondente.
Sicurezza dell’applicazione
- Content Security Policy rigorosa con nonce per richiesta, protezione dal clickjacking, HSTS su HTTPS, nosniff e una referrer policy. Protezione da CSRF e session fixation.
- I file caricati sono controllati con un elenco di estensioni consentite e l’analisi del contenuto; script, eseguibili, SVG/HTML e doppie estensioni vengono bloccati.
- Protezione SSRF per ogni webhook e integrazione: gli indirizzi privati e di metadati sono bloccati (resistente al DNS rebinding), con un elenco di host interni attendibili gestito dall’amministratore.
- Segreti cifrati con la sua chiave dell’applicazione. Token API, link di approvazione, di modifica e di ripresa sono salvati solo come hash.
- Validazione lato server di ogni risposta, percorso di diramazione e calcolo; le soluzioni dei quiz non arrivano mai al browser; l’iniezione di formule viene neutralizzata nelle esportazioni CSV, Excel e Google Sheets.
- Link costruiti dall’indirizzo configurato, mai dall’intestazione Host della richiesta.
Monitoraggio e audit
- Log di controllo di accessi, amministrazione, esportazioni e decisioni di approvazione, compreso chi ha cambiato un approvatore e perché.
- Invio al SIEM: ogni voce viene scritta anche come una riga JSON piatta in un file giornaliero, pronta per Microsoft Sentinel, Elastic o uno Splunk Universal Forwarder. Esportazione in CSV o JSON Lines.
- Webhook firmati (HMAC-SHA256 con timestamp), così i destinatari possono verificare ogni chiamata.
Aggiornamenti e catena di fornitura
- Aggiornamenti firmati: ogni versione viene verificata con Ed25519 prima dell’installazione, poi applicata in modalità manutenzione, con ripristino in un clic.
- Aggiornamenti puliti: i file rimossi in una versione vengono rimossi anche dal suo server, così un’installazione aggiornata corrisponde a una nuova.
- Le prove di licenza sono firmate e verificate con una chiave integrata nell’app: nessuna variabile d’ambiente può sbloccare un piano a pagamento.
Impostazioni sotto il suo controllo
Le impostazioni sicure sono attive fin da subito. In Impostazioni → Sicurezza può renderle ancora più rigorose:
- Richiedere l’autenticazione a due fattori agli amministratori
- Lunghezza minima della password (maiuscole, minuscole e cifre sempre obbligatorie) e durata della sessione
- Estensioni di file consentite e dimensione massima dei caricamenti
- Host privati consentiti per webhook e integrazioni: tutto ciò che è interno viene altrimenti bloccato
- Posizioni e account SharePoint, OneDrive e Google Drive che gli editor possono usare (gli amministratori possono sceglierne qualsiasi)
- Se gli account Microsoft, Google e Okta possono usare anche una password; gli account disattivati in Entra ID o Google Workspace non possono più accedere con essa
- Scrivere ogni risposta in un file di log JSON per il suo log shipper
- Conservazione dei dati: eliminare automaticamente le risposte vecchie dopo il periodo scelto (veda GDPR)

Architettura
Un’unica applicazione web sul suo server: nessun nostro servizio cloud sul percorso dei suoi dati.
- Applicazione: PHP 8.3+ (Laravel) dietro il suo web server, oppure l’immagine Docker. L’app del browser è servita dallo stesso indirizzo; non vengono caricati script, font o CDN di terze parti, e la Content-Security-Policy consente solo il suo server.
- Database: MySQL/MariaDB, PostgreSQL o SQLite: moduli, risposte, approvazioni, account e impostazioni. Password e chiavi API delle integrazioni sono cifrate con la chiave propria dell’installazione (
APP_KEY). - File: caricamenti, firme e PDF generati nella cartella
storage, fuori dalla root web, con nomi casuali; vengono serviti solo dopo un controllo di accesso. - Scheduler: una voce cron (
schedule:runogni minuto) invia i promemoria, applica la politica di conservazione e controlla aggiornamenti e licenza. - Indirizzi pubblici: moduli (
/f/…), portali (/p/…), link di approvazione (/approve/…) e ricevute (/r/…); ognuno verifica la propria regola di accesso o un token firmato. Tutto il resto (/app,/api) richiede un account con accesso effettuato; l’API REST (Business ed Enterprise) e SCIM (Enterprise) richiedono token. - I backup sono suoi: il database più la cartella
storage, compresostorage/.envcon la chiave che decifra i segreti salvati.
Cosa esce dal suo server
SnagBane non ha analytics né telemetria. Di sua iniziativa stabilisce solo queste connessioni:
| Connessione | Cosa viene inviato | A | Quando |
|---|---|---|---|
| Controllo aggiornamenti | Edizione, versione, versione di PHP e indirizzo del sito. Con una licenza anche: la chiave di licenza, l’ID di installazione Freemius e un ID di installazione casuale | Servizio aggiornamenti di SnagBane (Cloudflare) | Ogni giorno e quando un amministratore controlla; disattivabile con SNAGBANE_UPDATES=false |
| Download aggiornamento | Solo la richiesta del pacchetto firmato | Servizio aggiornamenti di SnagBane | Quando un amministratore installa un aggiornamento |
| Attivazione della licenza (Business, Enterprise) | La chiave di licenza, un ID di installazione casuale, indirizzo e nome del sito, versione, e il nome e l’e-mail dell’amministratore che la attiva | Freemius (il nostro rivenditore) | Una volta, quando si aggiunge la licenza |
| Controllo della licenza (Business, Enterprise) | La chiave di licenza, l’ID di installazione Freemius, l’ID di installazione casuale e la versione | Freemius e il servizio licenze di SnagBane | Ogni giorno; ogni ora finché un controllo non riesce |
E queste solo se le configura:
| Cosa attiva | Cosa viene inviato | A |
|---|---|---|
| Notifiche, richieste di approvazione e ricevute | Il servizio di posta che configura (SMTP o API) | |
| Accesso e directory | Richieste di accesso; letture della directory per la selezione di persone, i responsabili e i gruppi | Microsoft Entra ID, Google Workspace, Okta o il suo identity provider SAML |
| Integrazioni e webhook | Le risposte e i file che ciascuna è impostata a inviare | I servizi che collega, sugli eventi che sceglie |
| Pagamenti nei moduli | Importo, valuta, causale e l’e-mail del rispondente se nota; mai i dati della carta | Stripe o PayPal |
| Log di controllo verso il suo SIEM | Voci del log di controllo | Il suo Sentinel, Splunk, Elastic o endpoint HTTPS |
| Traduzione automatica | I testi dei moduli che sceglie di tradurre | DeepL, Azure, Google o LibreTranslate |
| Notifiche dell’app per telefono | Un messaggio di risveglio vuoto: poi il telefono recupera l’avviso dal suo server | Il servizio push del browser della persona |
| Importare un modulo da un link | Una richiesta a quella pagina pubblica del modulo | Google Forms o Microsoft Forms, quando un editor ne importa uno |
| Scelte da un elenco | Una richiesta all’elenco | L’indirizzo CSV, l’elenco SharePoint, la tabella Excel o il foglio Google che collega |
Documenti per i valutatori
- Politica di divulgazione delle vulnerabilità: come segnalare un problema di sicurezza, e security.txt.
- Accordo sul trattamento dei dati: per i dati personali che potrebbe condividere con noi nelle richieste di assistenza (in inglese).
- GDPR e protezione dei dati, informativa sulla privacy e contratto di licenza (questi ultimi due in inglese).
- Il codice del server viene fornito leggibile con il software, così il suo team può esaminarlo e sottoporlo a test di sicurezza sulla sua installazione (EULA, sezione 2.3).
Non dichiariamo certificazioni come ISO 27001 o SOC 2: SnagBane gira nella sua infrastruttura, sotto i suoi controlli e audit.
Domande dei valutatori
Possiamo usarlo senza accesso a internet?
Con il piano Free, sì: non serve nulla. Business ed Enterprise richiedono HTTPS in uscita per rinnovare la prova di licenza almeno ogni 2 giorni; moduli, risposte e approvazioni continuano a funzionare anche mentre le funzioni a pagamento sono in pausa.
Chi può vedere le risposte?
Solo le persone a cui dà accesso all’area di lavoro del modulo, più gli approvatori per le richieste loro assegnate. Gli approvatori aprono i file tramite la propria approvazione, mai tramite un link pubblico.
Come si configurano le autorizzazioni di Microsoft 365?
Nel suo tenant: lo script PowerShell consigliato vi crea la registrazione dell’app, così vede e controlla ogni autorizzazione. Veda autorizzazioni.
Come portiamo il log di controllo in Sentinel o Splunk?
Con il piano Enterprise SnagBane lo invia direttamente a Microsoft Sentinel, Splunk, Elastic o a qualsiasi endpoint HTTPS. Può anche puntare un collector sui file giornalieri JSON Lines in storage/logs/audit. Veda la guida SIEM.
Come segnaliamo un problema di sicurezza?
Ci scriva come descritto nella politica di divulgazione delle vulnerabilità. La preghiamo di non aprire prima una segnalazione pubblica.
Dove sono i backup?
Dove esegue il backup del suo server: il database e la cartella storage. SnagBane non conserva copie altrove.