Ga naar hoofdinhoud

Beveiligingsmaatregelen

Overzicht

De configurator heeft meerdere beveiligingslagen om misbruik te voorkomen:

MaatregelDoel
Server-side prijsherberekeningVoorkomt prijsmanipulatie via de browser
Rate limitingBeperkt het aantal aanvragen per IP
HoneypotDetecteert eenvoudige bots
reCAPTCHA v2Blokkeert geavanceerdere bots
AES-256-GCM encryptieBeschermt gevoelige sleutels in de database

Server-side prijsherberekening

De prijs die de klant in de browser ziet, wordt bij het verzenden volledig opnieuw berekend op de server op basis van de actuele flow-configuratie. De server vergelijkt zijn berekening met de klant-prijs en slaat altijd de server-prijs op.

Dit voorkomt dat kwaadwillenden via browser developer tools een lagere prijs kunnen injecteren in het formulierverzoek.

Rate limiting

Per flow is instelbaar hoeveel aanvragen per IP-adres in een bepaald tijdsvenster zijn toegestaan. De standaardinstellingen zijn:

  • Max. aanvragen: 10 per IP
  • Tijdsvenster: 60 minuten

Als de limiet is bereikt, krijgt de client een 429 Too Many Requests-respons. De limiet is instelbaar per flow via de Flow-instellingen.

De limieten worden bijgehouden in geheugen (in-process). Bij een herstart van de server worden de tellers gereset.

Honeypot

Het contactformulier bevat een verborgen veld dat niet zichtbaar is voor menselijke gebruikers. Bots die alle velden proberen in te vullen, vullen ook dit veld in. Als het honeypot-veld ingevuld is, wordt de aanvraag geweigerd zonder foutmelding — de bot denkt dat de aanvraag geslaagd is.

reCAPTCHA v2

Als reCAPTCHA-keys zijn geconfigureerd, moet de klant de "Ik ben geen robot"-checkbox aanvinken. De server verifieert het token bij de Google reCAPTCHA API. Aanvragen zonder geldig token worden geweigerd.

De secret key wordt nooit teruggestuurd via de API. In de beheerpagina wordt de key gemaskeerd weergegeven als ••••••••.

Zie reCAPTCHA-configuratie voor de instelprocedure.

Encryptie van gevoelige instellingen

De reCAPTCHA secret key en SMTP-wachtwoorden worden versleuteld opgeslagen in de database met AES-256-GCM. De encryptiesleutel wordt ingesteld als omgevingsvariabele (ENCRYPTION_KEY) en staat nooit in de database.

Authenticatie beheeromgeving

De Strapi Admin is beveiligd met:

  • JWT-tokens (korte vervaltijd)
  • Bcrypt-gehashte wachtwoorden
  • Rolgebaseerde toegangscontrole (Administrator / Editor)

De frontend Admin-pagina's (/admin/*) zijn beveiligd met een auth-guard die controleert of de gebruiker een geldig admin-token heeft.

HTTPS

Zorg dat de applicatie altijd achter HTTPS draait in productie. Zonder HTTPS worden authenticatietokens en formulierdata in platte tekst verzonden.

Dependency-beveiliging

Houd dependencies up-to-date via regelmatige npm audit-controles in zowel backend als frontend.