PHP Academy · Lektion

Bästa praxis för sessionssäkerhet

Förhindra sessionsfixering och kapning med regenerering och flaggor.

Lektion 2 av 413 steg

Bästa praxis för sessionssäkerhet är en gratis lektion i PHP Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för PHP Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i PHP Academy innehåller totalt 4 lektioner.

Session fixation-attack

En angripare lurar en användare att använda ett sessions-ID som angriparen redan känner till och kapar sedan sessionen efter inloggningen.

Förhindra fixation: session_regenerate_id()

Efter varje privilegieändring (inloggning eller rolländring) ska Ni skapa ett nytt sessions-ID och samtidigt behålla befintliga sessionsdata.

<?php
session_start();
// After successful login:
session_regenerate_id(true); // true = delete old session file
$_SESSION["user_id"] = $userId;

Sessionskapning

En angripare stjäl sessions-ID:t genom nätverkssniffning, XSS eller läckta loggar. Minska risken med HTTPS, HttpOnly-cookies och fingeravtryckning.

session.cookie_httponly

Förhindra JavaScript från att läsa sessionscookien – det stoppar de flesta XSS-baserade sessionsstölder.

<?php
ini_set("session.cookie_httponly", 1);
session_start();

session.cookie_secure

Markera sessionscookien som Secure så att den bara skickas över HTTPS.

<?php
ini_set("session.cookie_secure", 1);
session_start();

session.cookie_samesite

Ställ in SameSite på Strict eller Lax för att förhindra CSRF-attacker som använder sessionscookien.

<?php
ini_set("session.cookie_samesite", "Strict");
session_start();

User-Agent-bindning

Lagra User-Agent i sessionen vid inloggning och verifiera den vid varje begäran för att upptäcka kapning.

<?php
if (!isset($_SESSION["ua"])) {
    $_SESSION["ua"] = $_SERVER["HTTP_USER_AGENT"];
} elseif ($_SESSION["ua"] !== $_SERVER["HTTP_USER_AGENT"]) {
    session_destroy();
    die("Session invalid");
}

Sessions-timeout

Implementera aktivitetsbaserade tidsgränser – logga automatiskt ut inaktiva användare.

<?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

Aktivera strikt läge så att servern avvisar okända sessions-ID:n – det förhindrar sessionsfixering via URL-injektion.

<?php
ini_set("session.use_strict_mode", 1);
session_start();

Anpassade sessionshanterare

Genom att lagra sessioner i Redis eller en databas kan ni centralt ogiltigförklara alla sessioner för en användare och övervaka aktiva sessioner.

Periodisk regenerering

Även under en lång autentiserad session bör ni regenerera sessions-ID:t var 15–30:e minut för att minska risken för stulna token.

Sammanfattning

Använd alltid HTTPS, ange flaggorna HttpOnly+Secure+SameSite, anropa session_regenerate_id(true) efter inloggning, implementera tidsgränser för inaktivitet och använd strikt läge.

Snabbtest

Vad gör session_regenerate_id(true)?

Gratis att börja

Lär dig PHP med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
49
Lektioner
195

Vanliga frågor

Är lektionen ”Bästa praxis för sessionssäkerhet” gratis?

Ja – hela texten till ”Bästa praxis för sessionssäkerhet” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i PHP Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i PHP Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Bästa praxis för sessionssäkerhet”?

Förhindra sessionsfixering och kapning med regenerering och flaggor. Ni övar på PHP Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig PHP Academy?

Du behöver inga förkunskaper. Utbildningen i PHP Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Bästa praxis för sessionssäkerhet”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här PHP Academy-lektionen?

Ja. Varje PHP Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Starta och använda sessioner
  2. Bästa praxis för sessionssäkerhet
  3. Ange och läsa cookies
  4. Cookiesäkerhet: flaggorna HttpOnly och Secure
← Tillbaka till PHP Academy