Beveiligingsoverzicht

Uw gegevens blijven waar ze horen.

Een samenvatting voor IT- en securityreviewers: hoe SnagBane wordt uitgerold, hoe het toegang regelt, hoe het is gehard en wat er precies uw server verlaat.

Uitrol en gegevens

  • Zelf gehost. SnagBane is software die u installeert met Docker, op een VPS of op cPanel. Formulieren, antwoorden, bestanden en accounts worden opgeslagen in uw eigen database (MySQL/MariaDB, PostgreSQL of SQLite) en uw eigen opslag.
  • Geen gedeelde standaardwachtwoorden. De Docker-database start met een installatiewachtwoord dat het installatieprogramma vervangt door een sterk willekeurig wachtwoord; php artisan snagbane:db-password wijzigt het later.
  • Privé bestandsopslag buiten de webroot, met willekeurige bestandsnamen.
  • Werkt op een intern netwerk. Het Free-abonnement heeft geen internettoegang nodig; Business en Enterprise hebben uitgaand HTTPS nodig voor de licentiecontrole.

Identiteit en toegang

  • Single sign-on met Microsoft Entra ID, Google Workspace, Okta en elke SAML 2.0-identiteitsprovider zoals AD FS of Ping (Business en Enterprise) – alleen ondertekende SAML-antwoorden op aanmeldingen die SnagBane zelf startte, elk één keer geaccepteerd. Aanmeldingen via de adreslijst maken nooit beheerders aan, en roltoewijzing via groepen kan een rol alleen verhogen.
  • Tweestapsverificatie voor SnagBane-accounts: een authenticator-app (de instelsleutel kan in een wachtwoordmanager) of FIDO2-beveiligingssleutels en passkeys — YubiKey, Windows Hello, Google Wachtwoordmanager, iCloud-sleutelhanger. De sterkste methode wordt eerst gevraagd; eenmalige herstelcodes zijn de weg terug, nooit alleen het wachtwoord. Kan verplicht worden voor beheerders, en een beheerder kan iemand vragen het opnieuw in te stellen.
  • Accountvergrendeling na herhaalde mislukte aanmeldingen – ook voor onbekende e-mailadressen, zodat accounts niet te achterhalen zijn – strenge wachtwoordregels en bcrypt-hashing.
  • Rollen en werkruimtes: eigenaren, beheerders, bewerkers, lezers en respondenten; toegangsregels per formulier, portaal en werkruimte. Bezoekers zonder toegang zien alleen de titel en beschrijving, nooit de vragen.
  • Nieuwe mensen krijgen standaard geen bewerkrechten – de standaardrol is respondent.

Applicatiebeveiliging

  • Strikte Content Security Policy met nonces per verzoek, bescherming tegen clickjacking, HSTS bij HTTPS, nosniff en een referrerbeleid. Bescherming tegen CSRF en session fixation.
  • Uploads worden gecontroleerd met een lijst van toegestane extensies en inhoudsanalyse; scripts, uitvoerbare bestanden, SVG/HTML en dubbele extensies worden geblokkeerd.
  • SSRF-bescherming voor elke webhook en integratie: privé- en metadata-adressen worden geblokkeerd (bestand tegen DNS-rebinding), met een toegestane lijst voor vertrouwde interne hosts die de beheerder bijhoudt.
  • Versleutelde geheimen met uw applicatiesleutel. API-tokens, goedkeuringslinks en bewerk- en hervatlinks worden alleen als hash opgeslagen.
  • Validatie aan de serverkant van elk antwoord, elk vertakkingspad en elke berekening; antwoorden op quizzen bereiken nooit de browser; formule-injectie wordt onschadelijk gemaakt in exports naar CSV, Excel en Google Sheets.
  • Links opgebouwd uit uw ingestelde adres, nooit uit de Host-header van het verzoek.

Monitoring en audit

  • Auditlogboek van aanmeldingen, beheer, exports en goedkeuringsbeslissingen, inclusief wie een goedkeurder wijzigde en waarom.
  • Streaming naar SIEM: elke regel wordt ook als één platte JSON-regel naar een dagelijks bestand geschreven, klaar voor Microsoft Sentinel, Elastic of een Splunk Universal Forwarder. Export als CSV of JSON Lines.
  • Ondertekende webhooks (HMAC-SHA256 met tijdstempel), zodat ontvangers elke aanroep kunnen controleren.

Updates en toeleveringsketen

  • Ondertekende updates: elke release wordt vóór installatie gecontroleerd met Ed25519 en daarna in onderhoudsmodus toegepast, met terugdraaien in één klik.
  • Schone updates: bestanden die in een release zijn verwijderd, verdwijnen ook van uw server, zodat een bijgewerkte installatie gelijk is aan een nieuwe installatie.
  • Licentiebewijzen worden ondertekend en gecontroleerd met een sleutel die in de app is ingebouwd – geen omgevingsinstelling kan een betaald abonnement ontgrendelen.

Instellingen die u bepaalt

Veilige standaardinstellingen zijn direct actief. In Instellingen → Beveiliging kunt u ze verder aanscherpen:

  • Tweestapsverificatie verplichten voor beheerders
  • Minimale wachtwoordlengte (hoofdletters, kleine letters en cijfers zijn altijd verplicht) en sessieduur
  • Toegestane bestandsextensies en maximale uploadgrootte
  • Toegestane privéhosts voor webhooks en integraties – al het interne wordt anders geblokkeerd
  • Locaties en accounts in SharePoint, OneDrive en Google Drive die bewerkers mogen gebruiken (beheerders kunnen alles kiezen)
  • Of accounts van Microsoft, Google en Okta ook een wachtwoord mogen gebruiken; accounts die in Entra ID of Google Workspace zijn uitgeschakeld, kunnen zich daar niet meer mee aanmelden
  • Elk antwoord naar een JSON-logbestand schrijven voor uw logverzamelaar
  • Bewaartermijn: oude antwoorden automatisch verwijderen na de periode die u kiest (zie AVG)
Instellingen → Beveiliging

Architectuur

Eén webapplicatie op uw server – geen clouddienst van ons in het pad van uw gegevens.

  • Applicatie: PHP 8.3+ (Laravel) achter uw webserver, of het Docker-image. De browser-app komt van hetzelfde adres; er worden geen scripts, lettertypen of CDN’s van derden geladen, en de Content-Security-Policy staat alleen uw eigen server toe.
  • Database: MySQL/MariaDB, PostgreSQL of SQLite – formulieren, antwoorden, goedkeuringen, accounts en instellingen. Wachtwoorden en API-sleutels van integraties worden versleuteld met de eigen sleutel van de installatie (APP_KEY).
  • Bestanden: uploads, handtekeningen en gegenereerde pdf’s in de map storage, buiten de webroot, met willekeurige namen; ze worden pas na een toegangscontrole geleverd.
  • Planner: één cronregel (schedule:run elke minuut) verstuurt herinneringen, past het bewaarbeleid toe en controleert op updates en de licentie.
  • Openbare adressen: formulieren (/f/…), portalen (/p/…), goedkeuringslinks (/approve/…) en bevestigingen (/r/…) – elk controleert een eigen toegangsregel of ondertekend token. Al het andere (/app, /api) vereist een aangemeld account; de REST API (Business en Enterprise) en SCIM (Enterprise) vereisen tokens.
  • Back-ups zijn van u: de database plus de map storage, inclusief storage/.env met de sleutel die opgeslagen geheimen ontsleutelt.

Wat uw server verlaat

SnagBane heeft geen analytics of telemetrie. Uit zichzelf maakt het alleen deze verbindingen:

VerbindingWat er wordt verzondenNaarWanneer
UpdatecontroleEditie, versie, PHP-versie en site-adres. Met een licentie ook: de licentiesleutel, het installatie-ID van Freemius en een willekeurig installatie-IDUpdatedienst van SnagBane (Cloudflare)Dagelijks en wanneer een beheerder controleert; uit te zetten met SNAGBANE_UPDATES=false
Update downloadenAlleen het verzoek om het ondertekende pakketUpdatedienst van SnagBaneWanneer een beheerder een update installeert
Licentieactivering (Business, Enterprise)De licentiesleutel, een willekeurig installatie-ID, adres en naam van de site, de versie, en de naam en het e-mailadres van de beheerder die activeertFreemius (onze wederverkoper)Eén keer, bij het toevoegen van de licentie
Licentiecontrole (Business, Enterprise)De licentiesleutel, het installatie-ID van Freemius, het willekeurige installatie-ID en de versieFreemius en de licentiedienst van SnagBaneDagelijks; elk uur zolang een controle mislukt

En deze alleen als u ze instelt:

Wat u inschakeltWat er wordt verzondenNaar
E-mailMeldingen, goedkeuringsverzoeken en bevestigingenDe maildienst die u instelt (SMTP of API)
Aanmelden en adreslijstAanmeldverzoeken; leesacties op de adreslijst voor personenkiezers, leidinggevenden en groepenMicrosoft Entra ID, Google Workspace, Okta of uw SAML-identiteitsprovider
Integraties en webhooksDe antwoorden en bestanden die elk ervan moet versturenDe diensten die u koppelt, bij de gebeurtenissen die u kiest
Betalingen in formulierenBedrag, valuta, waarvoor wordt betaald en het e-mailadres van de respondent als dat bekend is – nooit kaartgegevensStripe of PayPal
Auditlogboek naar uw SIEMRegels uit het auditlogboekUw Sentinel, Splunk, Elastic of HTTPS-endpoint
MachinevertalingDe formulierteksten die u laat vertalenDeepL, Azure, Google of LibreTranslate
Meldingen van de telefoonappEen leeg wekbericht – de telefoon haalt daarna de melding op van uw serverDe pushdienst van de browser van die persoon
Een formulier importeren via een linkEen verzoek voor die openbare formulierpaginaGoogle Forms of Microsoft Forms, wanneer een bewerker er een importeert
Keuzes uit een lijstEen verzoek voor de lijstHet CSV-adres, de SharePoint-lijst, de Excel-tabel of het Google-spreadsheet dat u koppelt

Documenten voor reviewers

We claimen geen certificeringen zoals ISO 27001 of SOC 2: SnagBane draait binnen uw infrastructuur, onder uw controles en audits.

Vragen van reviewers

Kunnen we het zonder internettoegang draaien?

Met het Free-abonnement wel – er is niets nodig. Business en Enterprise hebben uitgaand HTTPS nodig om het licentiebewijs minstens elke 2 dagen te vernieuwen; formulieren, antwoorden en goedkeuringen blijven werken, ook als betaalde functies gepauzeerd zijn.

Wie kan antwoorden zien?

Alleen mensen die u toegang geeft tot de werkruimte van het formulier, plus goedkeurders voor de aanvragen die aan hen zijn toegewezen. Goedkeurders openen bestanden via hun goedkeuring, nooit via een openbare link.

Hoe worden de rechten voor Microsoft 365 ingesteld?

In uw eigen tenant: het aanbevolen PowerShell-script maakt daar de app-registratie aan, zodat u elke machtiging ziet en beheert. Zie machtigingen.

Hoe krijgen we het auditlogboek in Sentinel of Splunk?

Met het Enterprise-abonnement stuurt SnagBane het rechtstreeks naar Microsoft Sentinel, Splunk, Elastic of elk HTTPS-endpoint. U kunt ook een logverzamelaar laten lezen uit de dagelijkse JSON Lines-bestanden in storage/logs/audit. Zie de SIEM-handleiding.

Hoe melden we een beveiligingsprobleem?

Mail ons zoals beschreven in het beleid voor het melden van kwetsbaarheden. Open alstublieft niet eerst een openbaar issue.

Waar staan de back-ups?

Waar u uw server ook back-upt: de database en de map storage. SnagBane bewaart nergens anders kopieën.