Beveiliging van websites 3/3 - Eenvoud

Beveiliging van websites 3/3

23 april 2020

Het internet ontwikkelt zich constant. Je kunt het zo gek niet verzinnen of er bestaat een website voor. Ook qua bruikbaarheid en user experience zijn er in de afgelopen decennia grote veranderingen geweest. Om gebruikers van het internet te beschermen is er op gebied van veiligheid ook veel ontwikkeld. In dit laatste deel bespreken we de beveiliging binnen Iframes en verbinding.


Dit artikel is het derde gedeelte uit onze driedelige serie over beveiliging.
Lees het eerste gedeelte over een threat model en lees over email spoofing, vertrouwde bronnen en cross site scripting in deel 2.


Frames

Iframes kunnen worden gebruikt om een pagina direct in te laden in een andere pagina. Je komt het bij onze websites vaak tegen als er een video uit Vimeo moet worden ingeladen. Voor de meeste websites is het echter nergens voor nodig dat de website in een iframe kan worden ingeladen. Dit vormt alleen een beveiligingsrisico waarbij een kwaadwillende website je site kan inladen en bijvoorbeeld kliks kan afvangen, of advertentie-inkomsten kan genereren met jouw content.

Om dit te voorkomen kun je de X-Frame-Options header gebruiken om aan browsers aan te geven dat je website wel of niet in een iframe getoond mag worden.

Beveiligde verbinding

Google rankt inmiddels alweer een tijdje websites die primair bereikbaar zijn via een beveiligde verbinding hoger dan websites die dit niet implementeren. Maar waarom eigenlijk?

Wanneer je een website bezoekt stuur je een verzoek aan een webserver die jou een antwoord terugstuurt. Op dezelfde wijze verstuur je bijvoorbeeld gegevens in een formulier, of haal je plaatjes op. Hoe deze gegevens worden verstuurd staat beschreven in het http-protocol waar browsers gebruik van maken. Dit protocol heeft echter als nadeel dat de gegevens gelezen en veranderd kunnen worden tussen jouw computer en de webserver door iemand die kwaad wil. Dit heet een “Man in the Middle aanval” (MitM).

Een beveiligde verbinding beschermt in de meeste gevallen tegen zo’n aanval. Bij een https-verbinding worden gegevens met een sleutel gecodeerd en gedecodeerd zodat alleen de webserver en jouw browser de gegevens kunnen lezen.

Om toch een MitM aanval uit te voeren zijn er twee mogelijkheden. De aanvaller forceert de onbeveiligde http-verbinding en zorgt dat er geen https-verbinding wordt opgezet, of de aanvaller zet een https-verbinding op tussen de computer van de aanvaller en jouw browser.

Een simpele permanente redirect van http naar https is het minimale om de bezoekers van je site vanaf beveiligde verbindingen te laten bezoeken. Om te zorgen dat een website altijd over https wordt geladen bestaat daarnaast de Strict-Transport-Security header (HSTS). Wanneer de browser deze header terugkrijgt in een antwoord van de server, wordt daarna de site altijd over https geladen, zonder dat de browser eerst een verzoek voor data verstuurt over http. Met deze header kan zelfs worden aangegeven dat de site op een “preload”-lijst moet komen te staan, waardoor zelfs browsers die nog nooit een website hebben bezocht altijd de website over https laden.

Certificaten die gebruikt worden om de verbinding over https te beveiligen worden uitgegeven voor een specifiek domein, of set van domeinen. De instantie die het certificaat uitgeeft controleert voor het uitgeven van een certificaat of degene die het certificaat aanvraagt ook controle heeft over het domein. Een MitM aanval waarbij de aanvaller een eigen https-connectie opzet alsof het van jouw website komt is daarom bijna niet mogelijk zonder dat je dit weet. Het wordt in de praktijk gebruikt op netwerken van grote bedrijven, waar de IT-afdeling een vertrouwd certificaat installeert op de computers van hun medewerkers en op deze wijze gegevens kan inzien die op het netwerk van het bedrijf worden verstuurd of ontvangen. In juli 2019 implementeerde de regering van Kazachstan iets soortgelijks, waarbij inwoners van het land een zogenaamd root-certificaat moeten installeren op hun computer. Hierbij kan die regering al het internetverkeer tussen haar inwoners en websites lezen, opslaan en manipuleren. Anders dan het invalideren van root-certificaten die zulke aanvallen mogelijk maken kan ook public key pinning worden gebruikt om het risico van zo’n aanval te verkleinen. Hierbij wordt een website expliciet gekoppeld aan een bepaald certificaat.

Is uw organisatie in de afgelopen tijd veranderd? Sluit uw threat model nog steeds aan op de werkelijkheid? Neem vrijblijvend contact met ons op om te kijken wat wij voor jou kunnen betekenen.

Geschreven door onze Full Stack developer: Dico