22 mei 2019

“Een cookie is een klein tekstbestand dat bij een bezoek aan een website wordt opgeslagen in de browser van je computer, tablet of smartphone”. Een gelijkaardige definitie van cookies is te vinden in menig privacyverklaring op het internet. Er wordt dan uitgelegd dat zo'n cookie bijvoorbeeld gebruikt wordt om je taalvoorkeuren op een website te onthouden. Maar niet elk gebruik van cookies is zo onschuldig. Zo worden ze ook gebruikt door bedrijven om kennis over u te vergaren. En kennis is macht. Dat geldt voor de datareuzen op het internet, maar evengoed voor u. Lees verder om te weten te komen hoe adverteerders uw surfgedrag gedetailleerd in kaart kunnen brengen ahv cookies.

 

Browsen in een notendop

Figuur 1 toont een sterk vereenvoudigde voorstelling van wat er gebeurt op het moment dat je de website https://www.nestor.coop bezoekt. We laten hier een aantal belangrijke stappen achterwege, zoals de vraag hoe jouw toestel weet waar de server van nestor.coop zich bevindt.

figuur 1: het laden van een simpele webpaginaFiguur 1: het laden van een simpele webpagina

Twee belangrijke zaken springen meteen in het oog:

  • Het laden van een specifieke internetpagina is meestal geen kwestie van één vraag en één antwoord. Afhankelijk van wat er juist op de pagina staat, zal jouw toestel meerdere malen de server van nestor.coop contacteren om allerhande zaken op te halen. Het eerste antwoord in de figuur (stap 2) stuurt enkel een skelet van de pagina terug. Daarin zitten de tekstuele en organisatorische elementen (titels, tekst, onderverdelingen, plaatsen waar foto's moeten verschijnen), geannoteerd in html-tags. Die tags zorgen ervoor dat je browser het onderscheid tussen bijvoorbeeld een hoofding en een paragraaftekst kan maken. Als er zich op de webpagina foto's bevinden, dan staat er in dit eerste antwoord enkel wáár die foto's ergens op het internet gevonden kunnen worden, de foto zelf wordt op dat moment niet geladen. Je browser zal aan de hand van dit eerste skelet verder aanvragen doen, bijvoorbeeld het logo op de pagina (stap 3).
  • De aanvragen die in figuur 1 van jouw toestel naar de server gaan, beginnen allemaal met een begroeting aan de hand van het IP-adres van je toestel. In deze sterke vereenvoudiging dient dit enkel om te illustreren dat elke aanvraag los staat van alle vorige aanvragen. De pijlen heen en terug vormen samen geen conversatie maar een opeenvolging van losstaande vragen en antwoorden. Het antwoord is uiteraard telkens gerelateerd aan de vraag in kwestie maar voor de server is stap 3 niet verbonden met stap 1. De server krijgt een vraag, geeft een antwoord en daarmee is zijn kous af.
    In figuur 1 gaat het telkens om hetzelfde IP-adres maar dat kan de server eigenlijk niks schelen. IP-adressen van website-bezoekers worden gedeeld door meerdere toestellen, bijvoorbeeld de toestellen van alle gebruikers van een internetverbinding in een huishouden of een kantoor. In figuur 1 zou het dus in principe kunnen zijn dat stap 1 uitgevoerd werd door een laptop in de living en stap 3 door een desktop op de eerste verdieping. De server heeft daar geen idee van. Hetzelfde geldt als je daarna op een link op de pagina klikt. Je vraagt dan een nieuwe pagina aan de server, maar die weet op dat moment niet dat jij die vorige pagina ook aangevraagd hebt. Misschien was dat die andere computer in de living.

Dat laatste punt is cruciaal voor bijvoorbeeld websites waar je kan inloggen. Het hele concept van inloggen vereist van de server dat hij weet dat er een verband is tussen opeenvolgende aanvragen, dat het telkens gaat over dezelfde ingelogde persoon - of machine, om correcter te zijn. In figuur 1 is zoiets niet mogelijk en als je op een site begint te navigeren al helemaal niet, de server kan niet weten dat het jouw machine is die om een specifieke pagina vraagt, of een andere machine op hetzelfde IP-adres. Om dat onderscheid te maken, hebben we cookies nodig.

 

Cookies (are you)

Cookies zijn kleine tekstbestanden die een server in een antwoord meestuurt en die opgeslagen worden op jouw toestel, waar ze gebruikt worden door jouw browser in verdere aanvragen bij dezelfde server. Vereenvoudigd gezegd bevat een cookie een houdbaarheidsdatum en een waarde.

figuur 2: een webpagina met een cookieFiguur 2: een webpagina met een cookie

 

 

De eerste stap in figuur 2 gebeurt nadat je je gebruikersnaam en wachtwoord op de website van nestor.coop ingevuld hebt. Deze gegevens worden (hopelijk versleuteld, dat is wat de s in https doet) doorgestuurd naar de server, die ze controleert. De server antwoordt met het skelet van de thuispagina van de gebruiker die inlogde én met een cookie*, dat opgeslagen wordt op de harde schijf van jouw machine. In dit geval zal er in dat cookie een heel lange reeks willekeurige tekens staan en de houdbaarheidsdatum zal bijvoorbeeld 3 maand zijn (te kiezen door de server). De reeks willekeurige tekens is in principe uniek en wordt ook op de server bewaard samen met andere informatie zoals het feit dat de computer met die specifieke tekenreeks op, succesvol ingelogd is.

Bij alle volgende aanvragen die jouw toestel doet voor pagina's op die specifieke website, wordt dat cookie meegestuurd en identificeert op die manier de specifieke machine van waarop de aanvraag gedaan werd. De server krijgt aldus een manier om een context op te bouwen omtrent het toestel dat de aanvragen doet.

Let wel, hoewel we in dit voorbeeld spreken van inloggen, is dit geen noodzakelijke context voor cookies. Een cookie kan om het even welke informatie bevatten, het is uiteindelijk gewoon tekst. Stel je bijvoorbeeld een website voor waarvan twee versies bestaan: één met een groene achtergrond en één met een rode achtergrond. De eerste keer dat je die site bezoekt krijg je eerst de vraag “groen of rood?”. Je antwoordt “rood” en de server geeft je de rode pagina en geeft meteen een cookie mee met de waarde “rood” in. Als je drie dagen later naar dezelfde pagina surft, wordt datzelfde cookie meteen meegestuurd en de server weet dus dat hij de rode versie moet serveren. In figuur 1 had de server in stap 2 trouwens ook een cookie met een lange willekeurige tekst kunnen meegeven om de machine verder te identificeren, zonder dat er sprake is van inloggen. Inloggen is slechts één van de situaties waarin cookies als techniek gebruikt worden.

Een laatste belangrijke opmerking mbt cookies is dat ze door jouw toestel enkel kunnen gestuurd worden naar een server die behoort tot het domein dat het cookie op jouw computer zette. Een cookie voor een bepaald domein kan ook enkel op jouw toestel gezet worden door “expliciet”** een server van dat domein te contacteren. Als in figuur 2 de website www.nestor.coop een cookie op jouw toestel zet, dan zal jouw toestel dit enkel meesturen in volgende aanvragen naar het domein www.nestor.coop, bijvoorbeeld als je naar https://www.nestor.coop/bezorgd-over-uw-privacy-en-die-van-uw-gebruikers?interesse=consultancy surft.

 

Anatomie van een webpagina (beacons eat cookies)

Een webpagina is opgebouwd uit HTML. HTML is een taal, een manier om informatie aan je browser te verstrekken over de vorm en de inhoud van de webpagina. Het stuk HTML “<h2>dit is een titel</h2>” zal bijvoorbeeld door je browser als een titel weergegeven worden (de “h” van “header” en de 2 om de relatieve grootte van verschillende titels weer te geven: h1 tekst is groter dan h2, is groter dan h3, is groter dan h4 enz.).

Helemaal interessant wordt het echter als we gaan kijken naar niet-tekstuele elementen, zoals bijvoorbeeld foto's. Beschouw het volgende scenario:

  • Je surft naar facebook (op dit moment wordt door facebook een cookie geplaatst met een willekeurige reeks tekens) en logt in. Vanaf nu staat er op jouw toestel dus een cookie met een willekeurige reeks tekens die ook op de server van facebook gekend is. Daarenboven is - door het inloggen - deze reeks tekens op de server van facebook verbonden met de context van jouw account met daarin je naam, geboortedatum, vrienden, likes, enz. Je scrollt een tiental minuten door je muur maar echt interessant is het niet. Je sluit facebook.
  • Je gaat naar https://www.nestor.coop. Er wordt zoals gezegd enkel een skelet van de landingspagina doorgestuurd, zonder de eigenlijke foto's bijvoorbeeld. Op de plaats waar een foto zou moeten staan, staat in dit fictieve voorbeeld iets als:
    <img src=”https://www.facebook.com/fb_pixel.png?origin=www.nestor.coop”>***
    Jouw browser analyseert dit skelet en gaat na welke extra aanvragen er nog moeten gebeuren. In dit geval merkt de browser dat er blijkbaar een beeldbestand moet geladen worden vanop de URL die achter “src” staat. Die afbeelding kan om het even wat zijn maar is in dit voorbeeld 1 pixel op 1 pixel groot en bovendien transparant zodat je ze niet kan zien, maar ze wordt achter de schermen wel geladen****. Achter het vraagteken staan extra parameters die meegestuurd worden naar de server van facebook bij het laden van die pixel.

Herinner je dat cookies door jouw toestel enkel meegestuurd worden met aanvragen naar hetzelfde domein dat het cookie daar plaatste. Op het moment dat je browser dus vanuit dat skelet vanop www.nestor.coop dat onzichtbare beeldje laadt vanop de server van facebook, wordt het cookie dat op je computer terecht kwam door voordien op facebook in te loggen, meegestuurd. Facebook krijgt op dat moment twee stukken informatie:

  • iémand heeft de website van nestor.coop bezocht (de “origin” parameter achter het vraagteken hierboven)
  • de welbepaalde unieke reeks willekeurige tekens vanop het toestel van die persoon

Aangezien je ingelogd was in facebook, is de willekeurige tekenreeks van je cookie op hun server verbonden met de context van jouw account, en dus weet facebook meteen ook de naam, voornaam, vrienden en likes van de persoon die nestor.coop bezocht.

Maar merk dus op dat je geen facebook-account moet hebben om op deze manier gevolgd te worden: de willekeurige tekenreeks die jouw machine identificeert, komt namelijk ook op je toestel terecht op het moment dat je browser naar de server van facebook gaat. Zelfs als je dus enkel de nestor.coop pagina met de fictieve facebook pixel bekijkt, kan facebook via het laden van die pixel een cookie met een willekeurige reeks tekens plaatsen op je toestel. Elke volgende pagina met zo'n pixel op, kan dan die willekeurige tekenreeks lezen en op die manier nagenoeg je hele avond browsen reconstrueren.
 

Conclusie

In dit voorbeeld wordt veel gebruik gemaakt van facebook. Sociale media in het algemeen spelen inderdaad een specifieke rol in dit spel gewoon omdat ze over zoveel persoonlijke informatie beschikken bovenop de willekeurige reeks tekens die een toestel identificeert. Maar het moge duidelijk zijn dat er nog veel andere spelers meedoen.

Zodra cookies en/of beacons in het spel zijn, is een website bezoeken niet louter een relatie tussen de machine van de gebruiker en de server. Het lijkt vaak zo, op de website, maar de processen die plaatsvinden tijdens het laden van de website bereiken de servers van verschillende bedrijven die op die manier zonder jouw medeweten meekijken over je schouder.

 

 

*Naar alle waarschijnlijkheid zal dat cookie al gezet worden op het moment dat je de login-pagina opvraagt en dus vóór je ingelogd bent, maar het verschil doet niet ter zake in dit vereenvoudigde voorbeeld.

**Zoals verder zal blijken, is “expliciet” in deze context relatief

***In deze tekst wordt een afbeelding gebruikt maar in de realiteit kan dit vanalles zijn. De social media buttons zijn bijvoorbeeld ook een vector, net als landkaarten of scripts.

**** Deze pixel wordt ook wel een “beacon” genoemd. Websites gebruiken zo'n beacon om via bijvoorbeeld facebook advertenties te laden op de pagina.

Andere blogs

Don’t be evil

1 jaar GDPR: is uw privacy beschermd?

Zoals verschenen op vrtnws evalueert Nestor na één jaar de GDPR. Is uw privacy nu echt beter beschermd?

Israelisch softwarebedrijf misbruikt achterpoort bij whatsapp

telefoon in een tekstballon (het whatsapp logo)

Door via de app te telefoneren, wist een Israëlisch bedrijf dat spyware ontwikkelt toegang te krijgen tot de telefoons van gebruikers, ook wanneer de oproep niet werd beantwoord. De achterpoort zou nu gedicht zijn in een recente upgrade bij Whatsapp.

Lees er meer over op The Guardian (Engels) of op VRTNWS.

Uw website in uw/goede handen

Video's zonder reclame met Peertube

Uw bestanden in eigen beheer met Nextcloud

Beheer uw achterban met CiviCRM

Wil u een privacyvriendelijke werking voor uw organisatie?

Een mailbox waar niemand meeleest

Meer cijfers dan u aankan met Matomo