Het is belangrijk om cookies die jouw website zet te beveiligen. Twee van zulke beveiligingsmechanismen zijn: httpOnly en RequireSSL. Hier leggen we je uit hoe je dit gebruikt in jouw webapplicatie.

HttpOnly cookies kunnen alleen door middel van een HTTP-verzoek opgevraagd en gelezen worden. Dat betekent dat een stukje JavaScript dat in jouw website draait niet een cookie kan uitlezen met document.cookie. Dit is goed, want dan kan een kwaadaardig JavaScript er niet bij.

Secure (of RequireSSL) vereist zelfs een SSL-verbinding met de website.

ASP.NET

In ASP.NET dwing je HttpOnly en Secure af in een web.config-bestand. Saillant detail, ondanks dat men altijd spreekt over de flag Secure noemt ASP.NET dit RequireSSL.

Neem in het web.config-bestand op:

<httpCookies httpOnlyCookies="true" />

Heb jij een SSL-certificaat bij jouw hostingpakket? Dan is het belangrijk dat erbij op te geven in het web.config-bestand. Gebruik dan:

<httpCookies httpOnlyCookies="true" requireSSL="true" />

Gebruik optioneel domain="" om een geldend domein voor het cookie in te stellen. Dan geldt het cookie alleen voor die domeinnaam.

Plaats dit in de <system.web> node van het web.config-bestand.

Je vindt alle relevante informatie in de HttpCookie Class documentatie (MSDN) en HttpCookiesSection Class (Microsoft Docs).

Classic ASP

Met classic ASP kun je de flags HttpOnly en RequireSSL/Secure alleen zetten d.m.v IIS URL Rewrite.

In plaats van bovenstaande <httpCookies httpOnlyCookies="true" /> voeg je dan het volgende toe in jouw web.config-bestand:

<rewrite>
	<outboundRules>
		<rule name="Add HttpOnly">
			<match serverVariable="RESPONSE_Set_Cookie" pattern=".*" />
			<conditions>
				<add input="{R:0}" pattern="; HttpOnly" negate="true" />
			</conditions>
			<action type="Rewrite" value="{R:0}; HttpOnly" />
		</rule>
		<rule name="Add Secure">
			<match serverVariable="RESPONSE_Set_Cookie" pattern=".*" />
			<conditions>
				<add input="{R:0}" pattern="; Secure" negate="true" />
			</conditions>
			<action type="Rewrite" value="{R:0}; Secure" />
		</rule>
	</outboundRules>
</rewrite>

Deze rewrites hebben als voordeel dat ze ook werken voor andere code. Dus kom je er met het ASP.NET stuk even niet uit, probeer dan deze. Hetzelfde geldt voor PHP, mits jouw website wordt gehost op Windows Server IIS.

PHP

Dat de PHP functie set_cookie() de Secure en HttpOnly flags al kan meegeven weet je hopelijk. Maar als je niet weet of een CMS waarvan jij gebruik maakt dit goed doet, en je niet alle code wilt controleren, dan kun je dit eenvoudig afdwingen.

Op onze Windows Server IIS webservers plaats je een php.user.ini-bestand, met hierin:

session.cookie_httponly = 1
session.cookie_secure = 1

De onderstaande .htaccess regel en bovengenoemde URL Rewrite kun je ook gebruiken.

Secure cookie met HttpOnly and Secure flag in Apache’s .htaccess

Op onze Linux Apache webservers plaats je een .htaccess-bestand met daarin:

Header edit Set-Cookie ^(.*)$ "$1; HTTPOnly"
Header edit Set-Cookie ^(.*)$ "$1; Secure"

Eventueel kun je het bovengenoemde php.user.ini hier ook voor gebruiken.

Je vindt meer belangrijke informatie in het artikel striktere websitebeveiliging met HTTP-reactieheaders.

Wat vind jij van dit antwoord?

Voor vragen kun je met ons chatten, mailen of bellen (050 211 0100)

Bedankt voor je feedback!

Er is een fout opgetreden. Probeer het later opnieuw.