Ga naar hoofdinhoud

🔒

Beveiliging

Gebouwd in lagen — van login tot OWASP Top 10.

Sms-gebaseerde tweefactorauthenticatie, rolgebaseerde toegangscontrole, brute-force-bescherming, HTTP-beveiligingsheaders, audit-log over elke actie en automatische OWASP ZAP-scan bij elke pull request.

  • Sms-gebaseerde 2FA met 10-minuten eenmalige codes
  • Rolgebaseerde toegang op pagina's en API-endpoints
  • Brute-force-bescherming met rate limits per endpoint
  • OWASP Top 10-compliance met wekelijkse ZAP-scan

Beveiliging is geen feature — het is fundament

Elke laag is gebouwd met beveiliging in gedachten. Login wordt beschermd door brute-force rate limits en optionele tweefactorauthenticatie. Elke pagina en elk API-endpoint controleert rechten bij elke call — niet alleen bij login. SQL-injectie is onmogelijk (geparameteriseerde queries), XSS wordt geblokkeerd (DOMPurify), CSRF-aanvallen worden voorkomen (SameSite=lax-cookies), en clickjacking wordt gestopt via de X-Frame-Options-header.

Elke actie wordt gelogd. Het audit-log toont wie wat heeft gedaan in het admin-paneel. Het beveiligingslog toont mislukte loginpogingen, 2FA-gebeurtenissen, toegang geweigerd en rate-limit-overschrijdingen. Het systeem is geaudit tegen OWASP Top 10, en OWASP ZAP-scanning draait automatisch bij elke pull request naar main.

Geparameteriseerde SQL-queries — geen injectie mogelijk

DOMPurify schoont door gebruiker geleverde HTML — geen XSS

Sessie-cookies HttpOnly + Secure + SameSite=lax

Audit-log over elke admin-actie

Beveiligingslog over mislukte logins en 2FA-gebeurtenissen

Dependabot + composer/npm audit bij elke build

Tweefactorauthenticatie (2FA)

  • Sms-gebaseerd

    Medewerkers kunnen sms-gebaseerde 2FA op hun account inschakelen.

  • 6-cijferige eenmalige code

    Bij login wordt een 6-cijferige code via sms gestuurd die bevestigd moet worden voor toegang.

  • 10 minuten geldig

    Codes verlopen na 10 minuten en kunnen maar één keer gebruikt worden.

  • Gelogd in het beveiligingslog

    Elke 2FA-gebeurtenis — voltooid en mislukt — wordt geregistreerd.

Rolgebaseerde toegangscontrole

Elk deel van het systeem is beschermd door benoemde rechten.

  • Rechten per pagina

    Gebruikers krijgen alleen toegang tot de delen van het systeem die hun rol toestaat.

  • Menu-items automatisch verborgen

    Items zonder rechten verschijnen niet in het menu — zodat gebruikers nooit knoppen zien die ze niet kunnen gebruiken.

  • Pogingen gelogd

    Pogingen om pagina's zonder rechten te benaderen worden gelogd in het beveiligingslog.

  • In-product beheerd

    De rechtenstructuur wordt onderhouden onder Instellingen → Rollen en rechten.

Brute-force-bescherming

Drie lagen rate limits beschermen tegen overbelasting en aanval.

  • Login-blokkering

    Te veel mislukte pogingen leiden tot een tijdelijke blokkering.

  • Algemeen: 60/min

    60 verzoeken per minuut voor elk geauthenticeerd endpoint.

  • Zoeken: 30/min

    30 verzoeken per minuut voor zoek-endpoints.

  • Bulk-lookup: 20/min

    20 verzoeken per minuut voor bulk-lookups.

  • Gestandaardiseerde fout

    Bij overschrijding wordt een standaard foutrespons met retry-after info teruggestuurd.

HTTP-beveiligingsheaders

Elke respons bevat beschermende headers.

  • Strict-Transport-Security

    Forceert HTTPS — voorkomt afluisteren.

  • X-Content-Type-Options

    Blokkeert MIME-sniffing-aanvallen.

  • X-Frame-Options

    Beschermt tegen clickjacking — het systeem kan niet op vreemde sites worden ingebed.

  • Referrer-Policy

    Voorkomt lekkage van interne URL's naar derden.

  • Permissions-Policy

    Blokkeert onbevoegd gebruik van camera, microfoon en locatie.

Inputvalidatie en injectiebescherming

  • Geparameteriseerde queries

    Alle databasetoegang gaat via Eloquent ORM — SQL-injectie is onmogelijk.

  • Validatie per endpoint

    Elk API-endpoint valideert binnenkomende data voor verwerking.

  • DOMPurify tegen XSS

    Door gebruiker geleverde HTML wordt met DOMPurify geschoond voor weergave.

  • MIME- en extensievalidatie

    Geüploade bestanden worden gevalideerd op type en extensie en opgeslagen buiten de webroot.

Audit-log en beveiligingslog

  • Audit-log over admin-acties

    Elke aanroep van het admin-paneel wordt gelogd met gebruikers-ID, URL, HTTP-methode, IP en tijdstempel.

  • Gevoelige velden geschoond

    Wachtwoorden en API-sleutels worden automatisch geschoond voor logging.

  • Beveiligingslog

    Mislukte logins, 2FA-gebeurtenissen, toegang geweigerd en rate-limit-overschrijdingen worden apart geregistreerd.

  • Alleen-lezen

    Het beveiligingslog is alleen-lezen en toegankelijk voor administrators.

OWASP Top 10 en kwetsbaarheidsscanning

Het systeem is geaudit tegen OWASP Top 10 (2021) en gehard op alle 10 categorieën.

  • Gebroken toegangscontrole

    Rolgebaseerde rechten op elke pagina en elk API-endpoint.

  • Cryptografische fouten

    HTTPS, veilige cookies, gehashte eenmalige codes.

  • Injectie

    Eloquent ORM en inputvalidatie — geen ruwe SQL met gebruikersinput.

  • OWASP ZAP-scanning

    Baseline-scanning draait bij elke pull request naar main en wekelijks. Hoogrisico-bevindingen blokkeren merge.

  • composer + npm audit

    Draait bij elke CI-build en stopt deploy bij kritieke pakketkwetsbaarheden.

  • Dependabot

    Monitort dependencies wekelijks en opent automatisch pull requests voor updates.

Verantwoordelijke disclosure

  • info@ziix.dk

    Beveiligingsproblemen worden privé gemeld met onderwerp "[SECURITY] DMS Vulnerability Report".

  • Ontvangstbevestiging binnen 48 uur

    Kritieke issues worden gericht binnen 30 dagen opgelost.

Veelgestelde vragen

Hoe beschermt ZiiX tegen brute-force-aanvallen?+
Loginpogingen zijn rate-limited — te veel mislukkingen leiden tot tijdelijke blokkering. API-endpoints zijn ook beschermd door drie rate-limit-niveaus: algemeen 60/min, zoeken 30/min, bulk-lookup 20/min.
Is tweefactorauthenticatie beschikbaar?+
Ja. Sms-gebaseerde 2FA kan per gebruikersaccount worden ingeschakeld. Bij login wordt een 6-cijferige eenmalige code verstuurd die bevestigd moet worden voor toegang. Codes verlopen na 10 minuten.
Hoe worden rechten beheerd?+
Rolgebaseerde toegang op elke pagina en elk API-endpoint. Menu-items worden automatisch verborgen voor gebruikers zonder rechten. Pogingen om pagina's zonder rechten te benaderen worden gelogd in het beveiligingslog.
Is het systeem geaudit tegen OWASP Top 10?+
Ja. Het systeem is gehard tegen alle 10 OWASP Top 10 (2021)-categorieën, en OWASP ZAP-baseline-scanning draait automatisch bij elke pull request naar main en wekelijks. Hoogrisico-bevindingen blokkeren merge.
Worden dependencies actueel gehouden?+
Ja. composer audit en npm audit draaien bij elke CI-build en stoppen deploy bij kritieke pakketkwetsbaarheden. Dependabot monitort dependencies wekelijks en opent automatisch pull requests voor updates.

Beveiliging ingebouwd — niet erop geplakt.

Start gratis en krijg een systeem dat vanaf dag één gehard is — zonder extra setup.