Beveiligingsmaatregelen
Overzicht
De configurator heeft meerdere beveiligingslagen om misbruik te voorkomen:
| Maatregel | Doel |
|---|---|
| Server-side prijsherberekening | Voorkomt prijsmanipulatie via de browser |
| Rate limiting | Beperkt het aantal aanvragen per IP |
| Honeypot | Detecteert eenvoudige bots |
| reCAPTCHA v2 | Blokkeert geavanceerdere bots |
| AES-256-GCM encryptie | Beschermt 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.