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 een IIS URL Rewite.

In plaats van bovenstaande <httpCookies httpOnlyCookies="true" /> moet je dan het volgende opnemen 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

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

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 Linux Apache webservers doe je in een .htaccess-bestand met daarin:

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

Op Windows Server IIS werkt bovengenoemde URL Rewrite ook.

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

Wat vond je van dit antwoord?

Bedankt voor je feedback!

Er is een fout opgetreden. Probeer het later opnieuw.