Sessie-ID
Een sessie-ID (sessie-identificatie) is een unieke, tijdelijke reeks letters en cijfers die een webserver aan een bezoeker toewijst zodra deze een website of applicatie opent. Omdat het standaard internetprotocol (HTTP) ‘staatloos’ is, heeft een webserver van nature geen geheugen. Zonder een hulpmiddel vergeet de server direct wie je bent zodra je naar een volgende pagina klikt. Het sessie-ID werkt als een digitaal garderobebonnetje: het bewijst bij elke vervolgklik wie jij bent, zodat de server jouw gegevens en acties correct aan elkaar kan koppelen.
Inhoudsopgave
Hoe de browser en server communiceren via het sessie-ID
Het proces rondom een sessie-ID verloopt in een vaste cyclus vanaf het moment dat je een website opent tot het moment dat je de browser sluit:
- Aanmaken: Bij het eerste verzoek genereert de webserver een willekeurige, unieke code (bijvoorbeeld sess_8f9a2b4c1e).
- Opslag: De server stuurt deze code terug naar de browser van de gebruiker. De browser bewaart dit ID meestal in een tijdelijke cookie (een session cookie).
- Herkennen: Bij elke vervolghandeling (zoals het toevoegen van een product aan je winkelmandje of het doorklikken naar een nieuwe pagina) stuurt de browser het sessie-ID automatisch mee in de HTTP-header.
- Vernietiging: Zodra de gebruiker uitlogt, de browser sluit of een tijdje inactief is, verloopt de sessie en wordt het sessie-ID door de server ongeldig gemaakt.
Waarom een sessie-ID goed afgeschermd moet zijn
Omdat een sessie-ID toegang geeft doordat de gebruiker al ingelogd is, is het een geliefd doelwit voor hackers. Als een kwaadwillende jouw sessie-ID te pakken krijgt, kan deze jouw identiteit op de website overnemen zonder dat daar een wachtwoord voor nodig is (session hijacking).
Om dit te voorkomen, passen webontwikkelaren strikte beveiligingsmaatregelen toe. Een veilig sessie-ID moet voldoende lang en willekeurig zijn, zodat het niet te raden is. Daarnaast worden ze uitsluitend via een beveiligde verbinding (HTTPS) verstuurd, en zorgt de cookie-instelling HttpOnly ervoor dat schadelijke scripts (zoals Cross-Site Scripting) de ID niet uit de browser kunnen stelen.
Veelgestelde vragen
Een sessie-ID is tijdelijk en wordt direct gewist zodra de sessie stopt of de browser wordt afgesloten. Permanente cookies blijven langere tijd op je apparaat staan om voorkeuren (zoals taalinstellingen of een ‘onthoud mij’-vinkje) te bewaren over meerdere bezoeken heen.
Dit gebeurt uit beveiligingsoverwegingen (session timeout). Als je je computer onbeheerd achterlaat, verlengt de server het sessie-ID niet meer. Mocht iemand anders achter de computer gaan zitten, dan is de sessie al verlopen.
Session fixation is een cyberaanval waarbij een hacker het slachtoffer dwingt om een door de hacker gekozen, bekende sessie-ID te gebruiken. Zodra het slachtoffer vervolgens inlogt, kan de hacker met datzelfde sessie-ID direct meekijken en de account overnemen.
Soms wel, als ontwikkelaars het ID meegeven in de URL (bijvoorbeeld site.nl/pagina?sid=12345). Dit wordt echter sterk afgeraden vanwege beveiligingsrisico’s; een sessie-ID hoort veilig in een afgeschermde cookie te zitten.