Configureren Security Headers

Configureren Security Headers


Het instellen van Security Headers is een eenvoudige manier om de beveiliging van jouw webapplicatie te verbeteren tegen veelvoorkomende aanvallen als clickjacking en cross site scripting.

Meest voorkomende Security Headers


HTTP Strict-Transport-Security

Oftwel HSTS. Deze header forceert het gebruikt van versleutelde HTTPS verbindingen met de webapplicatie. Sites als internet.nl controleren of de header ingesteld is. Een voorbeeld is als volgt:

Strict-Transport-Security: "max-age=63072000; includeSubDomains; preload"

Dit laat de browser weten dat de site die bezocht wordt, inclusief de subdomeinen, HTTPS only is. De browser zal deze applicatie voor komende 2 jaar, max-age in seconden, enkel via HTTPS benaderen. Preload houdt in dat dit domein in de preload lijst van alle grote browsers meegenomen wordt en dus ook bij het eerste bezoek HTTPS forceert.

Bij het configureren is het verstandig om een kortere max-age in te stellen, bijvoorbeeld 300. Op deze manier kan alles worden getest zonder direct langdurige impact op de site te veroorzaken. Wanneer alles naar behoren werkt kan deze waarde worden opgehoogd naar bijvoorbeeld 1 (31536000) of 2 (63072000) jaar, zoals in het voorbeeld.

Let op!
Het instellen van een HSTS header houdt in dat er altijd een geldig certificaat actief moet zijn. Dit geldt dus ook voor includeSubDomains, zorg er altijd voor dat ook alle subdomeinen en geldig certificaat hebben, of configureer HSTS zonder deze directive.

X-Frame-Options

Deze header wordt ingesteld om aan te geven of de browser een pagina in een frame mag renderen. Sites gebruiken dit om zogeheten click-jacking aanvallen te ontwijken door niet toe te staan dat content van de site op andere sites wordt embed. Deze header kan twee mogelijke waarden bevatten:

X-Frame-Options: "DENY"
X-Frame-Options: "SAMEORIGIN"

Bij het gebruik van DENY kan de site niet in een frame worden weergegeven, ongeacht welke site dit probeert. Bij het gebruik van SAMEORIGIN kan de pagina nog steeds in een frame getoond worden, zolang de site die deze in een frame opneemt hetzelfde is als de site die de pagina weergeeft.

X-Content-Type-Options

Deze header wordt ingesteld om aan te geven dat de MIME types, zoals deze gedefineerd staan in de Content-Type header, gevolgd moeten worden en niet mogen worden aangepast. Er is slechts een waarde die kan worden ingesteld en dat is:

X-Content-Type-Options: "nosniff"

Content-Security-Policy

De content security policy header is een extra beveiliginslaag die wordt toegevoegd om aanvallen als Cross-Site Scripting en data injectie te kunnen detecteren en mitigeren. Vaak wordt deze header al via de applicatie meegegeven, in het geval dat dit aan de kant van de server moet worden geconfigureerd kan dit worden toegevoegd door de:

Content-Security-Policy: "policy"

header mee te geven. In dit geval is de policy een placeholder voor de verschillende policies die kunnen worden ingesteld, meer informatie over de policies is hier te vinden.

Apache


Wanneer de apache webserver wordt gebruikt kunnen er middels het .htaccess bestand headers worden toegevoegd/gewijzigd. De syntax voor het toevoegen van de headers is als volgt:


Header always set X-Frame-Options "SAMEORIGIN"
Header always set Strict-Transport-Security: "max-age=63072000; includeSubDomains; preload"
Header set X-Content-Type-Options: "nosniff"
Header set Content-Security-Policy: "default-src 'self';"

bovenstaande zijn voorbeelden.

een een overzicht van al deze headers wordt bijgehouden in de developer blog van Mozilla.




Heeft u alles kunnen vinden?

Mocht je nog ergens tegen aan lopen, of mocht er informatie missen op deze pagina, laat het ons dan gerust weten! Wij staan dag en nacht klaar om je verder te helpen, en houden er van om feedback van onze trouwe partners/klanten te horen.