Best practices voor sessiebeveiliging
Voorkom session fixation en sessiekaping met regeneratie en flags.
Best practices voor sessiebeveiliging is een gratis PHP Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject PHP Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus PHP Academy bevat in totaal 4 lessen.
Sessiefixatieaanval
Een aanvaller verleidt een gebruiker om een sessie-ID te gebruiken die de aanvaller al kent en kaapt vervolgens de sessie na het inloggen.
Fixatie voorkomen: session_regenerate_id()
Genereer na elke wijziging van rechten (inloggen, rolwijziging) een nieuwe sessie-ID, met behoud van bestaande sessiegegevens.
<?php
session_start();
// After successful login:
session_regenerate_id(true); // true = delete old session file
$_SESSION["user_id"] = $userId;Sessiekaping
Een aanvaller steelt de sessie-ID via netwerksniffing, XSS of gelekte logbestanden. Beperk het risico met HTTPS, HttpOnly-cookies en vingerafdrukcontrole.
session.cookie_httponly
Voorkom dat JavaScript de sessiecookie kan lezen — dit stopt de meeste op XSS gebaseerde sessiediefstal.
<?php
ini_set("session.cookie_httponly", 1);
session_start();session.cookie_secure
Markeer de sessiecookie als Secure, zodat deze alleen via HTTPS wordt verzonden.
<?php
ini_set("session.cookie_secure", 1);
session_start();session.cookie_samesite
Stel SameSite in op Strict of Lax om CSRF-aanvallen te voorkomen die de sessiecookie gebruiken.
<?php
ini_set("session.cookie_samesite", "Strict");
session_start();Koppeling aan gebruikersagent
Sla de User-Agent bij het inloggen op in de sessie en controleer deze bij elk verzoek om kaping te detecteren.
<?php
if (!isset($_SESSION["ua"])) {
$_SESSION["ua"] = $_SERVER["HTTP_USER_AGENT"];
} elseif ($_SESSION["ua"] !== $_SERVER["HTTP_USER_AGENT"]) {
session_destroy();
die("Session invalid");
}Sessie-time-out
Implementeer time-outs op basis van activiteit — meld inactieve gebruikers automatisch af.
<?php
$timeout = 1800;
if (isset($_SESSION["last_active"]) &&
time() - $_SESSION["last_active"] > $timeout) {
session_destroy();
header("Location: /login");
exit;
}
$_SESSION["last_active"] = time();session.use_strict_mode
Schakel de strikte modus in, zodat de server niet-herkende sessie-ID's weigert — dit voorkomt sessievastlegging via URL-injectie.
<?php
ini_set("session.use_strict_mode", 1);
session_start();Aangepaste sessieverwerkers
Door sessies op te slaan in Redis of een database kun je alle sessies van een gebruiker centraal ongeldig maken en actieve sessies bewaken.
Periodieke vernieuwing
Vernieuw de sessie-ID ook tijdens een lange geauthenticeerde sessie elke 15–30 minuten om het risico op diefstal van tokens te verkleinen.
Samenvatting
Gebruik altijd HTTPS, stel de vlaggen HttpOnly+Secure+SameSite in, roep session_regenerate_id(true) na het inloggen aan, implementeer time-outs bij inactiviteit en gebruik de strikte modus.
Korte controle
Wat doet session_regenerate_id(true)?
Leer PHP met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 49
- Lessen
- 195
Veelgestelde vragen
Is de les “Best practices voor sessiebeveiliging” gratis?
Ja — de volledige tekst van “Best practices voor sessiebeveiliging” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus PHP Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus PHP Academy bevat in totaal 4 lessen.
Wat leer ik in “Best practices voor sessiebeveiliging”?
Voorkom session fixation en sessiekaping met regeneratie en flags. Je oefent met PHP Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met PHP Academy te beginnen?
Ervaring vooraf is niet nodig. PHP Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “Best practices voor sessiebeveiliging”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over PHP Academy?
Ja. Elke les over PHP Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Sessies starten en gebruiken
- Best practices voor sessiebeveiliging
- Cookies instellen en lezen
- Cookiebeveiliging: HttpOnly- en Secure-flags