Wat MKB moet weten
Een security-header is een instructie die je server meestuurt bij elke pagina-aanvraag, vóór de HTML-inhoud zelf. De browser leest deze headers en past zijn gedrag aan. Vijf headers vormen het minimumpakket voor een professionele MKB-site:
- 1. Strict-Transport-Security — forceert HTTPS, ook als een bezoeker per ongeluk via http:// binnenkomt. Voorbeeldwaarde:
max-age=31536000; includeSubDomains. - 2. Content-Security-Policy — stopt cross-site-scripting door alleen scripts uit specifiek toegestane bronnen toe te laten. Startersversie:
default-src 'self'. - 3. X-Frame-Options: DENY — voorkomt dat anderen jouw site in een iframe op hun eigen pagina laden (clickjacking).
- 4. X-Content-Type-Options: nosniff — verhindert dat de browser bestandstypes "raadt", wat een aanvalsvector dichtmaakt.
- 5. Referrer-Policy: strict-origin-when-cross-origin — stuurt bij uitgaande links alleen het domein door, niet de volledige URL met parameters.
Test je huidige situatie met securityheaders.com — gratis, een score van A of A+ is het doel. Een gemiddelde MKB-WordPress-site komt zonder ingrijpen uit op een D of F.
Waarom dit voor MKB telt
Drie redenen waarom security-headers voor een kleine ondernemer relevant zijn, ook als je geen webshop runt:
Vertrouwen. Browsers tonen waarschuwingen bij onveilige sites. Chrome en Safari markeren mixed-content (HTTPS-pagina die HTTP-resources laadt) inmiddels actief. Een hovenier of boekhouder die zijn klanten laat schrikken met een "Niet veilig"-melding verliest leads voor de offerteaanvraag.
Cyberrisico. 43% van cyberaanvallen target MKB volgens Verizon's Data Breach Investigations Report — niet grote bedrijven. Geautomatiseerde scans zoeken sites zonder Content-Security-Policy als laaghangend fruit voor scripting-aanvallen. Een formulier-injectie kost gemiddeld €3.000 aan herstelwerk plus reputatieschade.
SEO-signalen. Google hint sinds 2024 dat security-signalen meewegen in ranking. Bevestigd is in elk geval dat HTTPS een lichte ranking-factor is, en moderne best-practices volgen het patroon.
Header 1 — Strict-Transport-Security in detail
HTTPS-Strict-Transport-Security (HSTS) zegt tegen de browser: "Bezoek deze site het komende jaar uitsluitend via HTTPS, ook als de gebruiker http:// typt." De header bestaat uit drie onderdelen:
max-age=31536000— geldigheid in seconden, hier 1 jaar.includeSubDomains— ook geldig voor blog.designcheck.nl, shop.designcheck.nl etc.preload— voeg toe als je je domein wilt laten opnemen in Chromium's HSTS-preload-lijst (extra beveiliging, gevolg: ongedaan maken duurt maanden).
Een veelgemaakte fout: HSTS aanzetten op een site die nog niet volledig op HTTPS draait. Heeft je site één plaatje of script via http://, dan breekt de site voor terugkerende bezoekers. Eerst HTTPS overal afmaken, daarna HSTS. Voor MKB-sites op WordPress of Webflow is dit doorgaans al voltooid; voor oudere sites op statische hosting kan het een dag werk zijn.
Header 2 — Content-Security-Policy in detail
De Content-Security-Policy (CSP) is de meest krachtige én meest verwarrende van het rijtje. Hij definieert per resource-type van welke domeinen scripts, stylesheets, afbeeldingen en frames mogen worden geladen. Een minimale werkende CSP voor een statische MKB-site:
Content-Security-Policy: default-src 'self'; img-src 'self' data: https:; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; script-src 'self'
Deze policy laat alles uit het eigen domein toe, afbeeldingen ook van data-URLs en HTTPS-domeinen (handig voor CDN's), Google Fonts via stylesheets, en alleen eigen scripts. Heeft je site een chat-widget, analytics-script of YouTube-embed? Dan moeten de domeinen daarvan worden toegevoegd. Vergeten resulteert in een werkende site die er kapot uitziet — debugging via Chrome DevTools Console laat exact zien wat geblokkeerd werd.
Voor WordPress-sites is een plug-in als "Content Security Policy Pro" handig. Voor Webflow staat het in de Custom Code-sectie van Project Settings. Voor statische sites (zoals deze) configureer je het in vercel.json of Nginx-config.
Headers 3 en 4 — Clickjacking en MIME-sniffing
X-Frame-Options met waarde DENY blokkeert dat anderen jouw site in een iframe op hun pagina inbouwen. Aanvalsscenario: iemand maakt een phishing-site, embedt jouw login-pagina onzichtbaar, en laat de bezoeker per ongeluk klikken op een knop die in werkelijkheid op jouw site staat. DENY voorkomt dit volledig. Alternatief is SAMEORIGIN als je zelf een iframe-functie op je site hebt.
X-Content-Type-Options: nosniff voorkomt dat de browser het bestandstype "raadt" op basis van de inhoud. Een upload-functie die een gebruiker een nep-PDF laat uploaden die in werkelijkheid JavaScript bevat, wordt zonder nosniff door de browser uitgevoerd. Met nosniff blokkeert hij. Eén regel, geen tegenargument om hem niet te zetten.
Header 5 — Referrer-Policy en privacy
Wanneer een bezoeker op jouw site een externe link klikt, stuurt de browser standaard de hele URL als "Referer" mee. Op /klanten/intern/dossier-2026 → klik naar Google → Google ziet de hele URL. Voor publieke pagina's geen probleem, voor interne URL's wel. Strict-origin-when-cross-origin stuurt bij interne navigatie de volledige URL door, maar bij externe links alleen het hoofddomein. AVG-vriendelijk en aanbevolen voor elke MKB-site die met klantgegevens werkt.
Hoe je het implementeert per platform
- Vercel (statische sites). Voeg een
headers-sectie toe aanvercel.jsonmet de vijf headers. Eén commit, één deploy, klaar. - Netlify. Headers staan in
_headers-bestand in de root van de site. Vergelijkbare syntax. - WordPress met Apache. Voeg de headers toe via
.htaccess. Hostings als SiteGround en Kinsta laten dit vaak ook via control-panel-toggle toe. - WordPress met Nginx (Cloudways, Kinsta). Headers in
nginx.conf, of via hosting-paneel. - Webflow. Beperkt — Webflow voegt enkele headers automatisch toe, custom Content-Security-Policy vereist een Pro-plan en proxy via Cloudflare Workers.
- Shopify. Headers via
theme.liquidniet mogelijk; serverlevel managed door Shopify zelf. Externe Cloudflare-laag is workaround voor strengere policies. - Squarespace en Wix. Geen custom headers mogelijk — een reden om bij gevoelige sites te overwegen om naar een serieuzere platform te migreren.
Veelgemaakte fouten bij implementatie
Vijf valkuilen die we vaak tegenkomen bij audits in De Ronde Venen en omgeving:
- HSTS aanzetten vóór HTTPS volledig werkt. Resultaat: site breekt voor terugkerende bezoekers. Eerst alle resources op HTTPS, dan pas HSTS.
- CSP te strak instellen waardoor je eigen analytics niet meer werkt. Plaats CSP eerst in "Report-Only"-modus, monitor wat geblokkeerd wordt, pas dan de strikte versie.
- Headers per pagina inconsistent. Sommige WordPress-plug-ins zetten headers alleen op publieke pagina's en niet op admin-routes. Globaal instellen via webserver, niet via PHP.
- Headers dubbel ingesteld. Cloudflare zet bijvoorbeeld zelf X-Content-Type-Options, jouw server doet hetzelfde — browsers tonen dan een waarschuwing.
- 'unsafe-inline' in script-src laten staan. Maakt CSP grotendeels betekenisloos tegen XSS. Voor moderne sites is dit te vermijden door nonces of hashes.
Checklist: van score F naar A+ in 11 stappen
- Controleer huidige score via securityheaders.com.
- Bevestig dat je hele site op HTTPS draait (geen mixed content).
- Voeg Strict-Transport-Security toe met max-age 1 jaar.
- Voeg X-Content-Type-Options: nosniff toe.
- Voeg X-Frame-Options: DENY toe (of SAMEORIGIN als nodig).
- Voeg Referrer-Policy: strict-origin-when-cross-origin toe.
- Implementeer Content-Security-Policy in "Report-Only"-modus voor één week.
- Monitor Chrome DevTools Console op CSP-violations en pas policy aan.
- Zet Content-Security-Policy live (zonder Report-Only).
- Test alle belangrijke pagina's en formulieren in Chrome, Safari en Firefox.
- Hertest op securityheaders.com — target A of A+.
Wat het je kost en oplevert
Voor een gemiddelde MKB-site is de eerste implementatie 1 tot 3 uur werk voor iemand met enige technische kennis van hosting. Bij DesignCheck zit dit standaard in elke Refresh (€1.995), Rebuild (€3.995) en Premium (€6.995) — geen apart factuur-item. Marktconforme prijzen bij andere bureaus voor losse security-header-audit liggen tussen €350 en €900.
Wat het oplevert: een professionele indruk bij vergelijkers die de site doorlichten (denk aan inkopers, gemeentes die leveranciers screenen, of B2B-prospects). Concreet bij de Keurmeesters-launch in mei 2026 stond securityheaders.com score op A+ — een signaal voor zakelijke klanten dat de privacy van de adres- en woningdata via de BAG-API serieus wordt behandeld. Dit soort details kunnen het verschil maken bij offerteaanvragen waar meerdere partijen vergeleken worden.
De extra zes: nice-to-have voor de gevorderde MKB-site
Naast de vijf basisheaders zijn er extra headers die meerwaarde leveren bij sites met formulieren, uploads of betaalflows. Niet verplicht voor de meeste MKB-sites, maar de moeite waard om te kennen.
- Permissions-Policy — definieert welke browser-APIs jouw site mag aanspreken. Voorbeeld:
camera=(), microphone=(), geolocation=()blokkeert al deze APIs. Voor een hoveniers-site of klusbedrijf-site geen reden om deze APIs überhaupt toe te staan. - Cross-Origin-Opener-Policy: same-origin — isoleert je site van pop-ups van andere domeinen. Verhindert dat een externe site referenties uit jouw browsertab kan lezen.
- Cross-Origin-Embedder-Policy: require-corp — geavanceerd, vereist dat alle embedded resources expliciet toestemming geven om gebruikt te worden.
- Cross-Origin-Resource-Policy: same-origin — voorkomt dat anderen jouw resources (afbeeldingen, scripts) inladen op hun site (bandwidth-leeching).
- Cache-Control — geen pure security-header, maar wel essentieel voor performance. Lange cache-headers op static assets, korte op HTML-pagina's.
- Server header verbergen — standaard zegt Apache "Apache/2.4.41" en Nginx "nginx/1.18.0". Aanvallers gebruiken deze info om bekende kwetsbaarheden te targeten. Verberg of generaliseer.
Testtools die je zonder kosten kunt gebruiken
Voordat je iets aanpast, eerst meten. Vier tools waarmee je in een halfuur de huidige situatie helder hebt:
- securityheaders.com — de gouden standaard. Voer je domein in, krijg een rapportcijfer van F tot A+ plus een per-header-uitleg wat ontbreekt. Gratis, geen account nodig.
- Mozilla Observatory (observatory.mozilla.org) — uitgebreider rapport met percentage-score (0-130) en concrete adviezen per header. Detecteert ook ouderwetse configuraties.
- SSL Labs (ssllabs.com/ssltest) — focus op TLS/HTTPS-configuratie maar test ook HSTS. Target A of A+.
- Chrome DevTools Security-tab — open je site, druk F12, ga naar "Security". Toont per pagina de actuele security-staat plus warnings.
Aanvullend handig: WebPageTest.org levert een complete waterval inclusief response-headers per resource. Goed om te zien of headers op alle URL's worden meegestuurd (een veelvoorkomende fout: headers op /index.html maar niet op /api-endpoints).
Onderhoud na de eerste implementatie
Security-headers zijn geen set-and-forget-onderdeel. Tweemaal per jaar opnieuw scoren via securityheaders.com is een redelijke regel. Reden: browsers introduceren periodiek nieuwe header-opties of deprecaten oude. X-XSS-Protection was bijvoorbeeld jarenlang aanbevolen en wordt anno 2026 actief afgeraden omdat moderne browsers het zelf afhandelen en de header juist nieuwe aanvalsvectoren introduceerde.
Tweede onderhoudpunt: nieuwe scripts of plug-ins kunnen de Content-Security-Policy breken. Voeg je een chat-widget, een Google Maps-embed of een nieuw analytics-script toe? Test direct of CSP de bron toelaat, anders werkt het deel niet. Bij iedere significante feature-toevoeging is een minuten-werk-controle voldoende.
De relatie met AVG en compliance
Sinds 2018 verplicht de AVG passende technische maatregelen voor sites die persoonsgegevens verwerken. Een formulier op je MKB-site dat naam, e-mail en telefoonnummer verzamelt valt hieronder. Security-headers zijn niet expliciet voorgeschreven, maar de Autoriteit Persoonsgegevens hanteert in haar boete-richtlijnen wel "modern best-practice" als ondergrens. Bij een datalek waar passende maatregelen niet aantoonbaar zijn, ligt de boete-schaal hoger.
Concreet voor MKB: kun je bij een audit aantonen dat je een score van A op securityheaders.com hebt? Dan voldoet je site aan de basis-eisen. Onder de C? Lastig uit te leggen dat je "passende technische maatregelen" hebt genomen. De vijf basisheaders zijn dus niet alleen technisch zinvol, maar ook juridisch verstandig.
Hoe security-headers en moderne zoekmachines samenwerken
Zoekmachines crawlen jouw site met dezelfde browser-engine die bezoekers gebruiken (Googlebot draait op een variant van Chromium). Dat betekent dat ook de Googlebot de security-headers leest en respecteert. Een te strikte Content-Security-Policy die jouw eigen JavaScript blokkeert, wordt door Googlebot waargenomen — pagina's worden dan zonder die scripts geïndexeerd. Voor sites die belangrijke content via JavaScript laden is dat een risico.
De praktische regel: test je site na elke CSP-wijziging zowel in Chrome incognito (vers profiel, geen cache) als via de URL-inspectie in Search Console. Klikt de "Rendered HTML"-tab en kijkt of je content er staat. Mist er iets, dan blokkeert je CSP iets dat hij zou moeten toelaten. Pas aan, herpubliceer, retest. Een dag werk voor een rustige, moderne MKB-site.
Bing en DuckDuckGo gedragen zich vergelijkbaar. Smaller browser-engines (zoals die in oudere voice-assistants) zijn vaak iets toleranter, maar voor de moderne indexering 2026 gaan we ervan uit dat je site met strikte security-headers volledig leesbaar blijft.
Wat een security-breach kost voor een MKB-bedrijf
Een gemiddelde XSS-aanval (waar Content-Security-Policy juist tegen beschermt) op een MKB-site kost €3.000 tot €15.000 aan herstelwerk: schoonmaak van de site, eventuele klantmeldingen bij datalek, AVG-meldingen bij autoriteit, reputatieherstel. Voor een hovenier of klusbedrijf is dat al snel een maand omzet kwijt. Voor een boekhouder met klantdossiers loopt het hoger op door de meldplicht en eventuele claims.
De preventie kost ofwel een paar uur consultancy (€350-€900 bij een losse audit) ofwel zit standaard in een nieuwbouw-traject. Een DesignCheck Refresh van €1.995 verdient zichzelf terug zodra je één serieus incident voorkomt. Reken via de verliescalculator wat downtime en herstelwerk in jouw branche concreet betekent.
Veelvoorkomende scenario's per branche
Tijdens audits in De Ronde Venen en omgeving zien we per branche andere prioriteiten:
- Hoveniers, klusbedrijven, schilders. Eenvoudige sites met contactformulier. Vijf basisheaders ruim voldoende, geen Permissions-Policy nodig. Wel CSP correct voor het formulier-script.
- Webshops onder de €500k omzet. Voeg Permissions-Policy en Cross-Origin-Resource-Policy toe. Betaalprovider-domein expliciet toelaten in CSP
frame-src. - Boekhouders, advocaten, makelaars. Strikte CSP omdat formulieren met klantgegevens centraal staan. Referrer-Policy: no-referrer-when-downgrade i.p.v. strict-origin-when-cross-origin voor extra strenge omgang met klantdossiers.
- Klinieken, zorgaanbieders. Alle 11 headers, strict CSP, HSTS preload. AVG-compliance vraagt dit niveau.
- Restaurants, kapsalons, sportscholen. Vijf basisheaders volstaan. Eventueel Permissions-Policy om camera/microphone te blokkeren als de site geen video-functie heeft.
- Energielabel-bureaus zoals Keurmeesters. Strikte CSP omdat de site BAG-API-data inlaadt. Cross-Origin-headers om API-respons te beveiligen tegen embed door derden.
Wat doe je vandaag?
Ga naar securityheaders.com, voer je domein in, noteer de score. F, D of C? Tijd voor actie. A of A+? Mooi, jaarlijks blijven monitoren. Geen tijd of geen ontwikkelaar? De gratis DesignCheck-audit kijkt mee binnen 48 uur.
Gratis audit aanvragen →Veelgestelde vragen
Wanneer is dit relevant?
Breekt mijn site als ik deze headers instel?
Helpt dit ook tegen DDoS-aanvallen?
Zit ik vast aan een hosting-leverancier als ik HSTS preload gebruik?
Wat krijg je bij DesignCheck?
Bij elke nieuwbouw (Rebuild €3.995, Premium €6.995) zit een complete security-header-set met A of A+ op securityheaders.com. Bij een Refresh (€1.995) controleren en herstellen we bestaande headers als onderdeel van de technical-SEO-set. Dit alles vanuit Mijdrecht, voor klanten in De Ronde Venen, Wilnis, Vinkeveen, Utrecht en daarbuiten (remote werkbaar tot wereldwijd). Vraag de gratis audit aan om je huidige score te zien en advies te krijgen.