0Pricing
PHP Academy · Lezione

Best practice per la sicurezza delle sessioni

Prevenire il session fixation e il session hijacking con la rigenerazione e i flag.

Best practice per la sicurezza delle sessioni è una lezione PHP Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento PHP Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso PHP Academy include 4 lezioni in totale.

Attacco di fissazione della sessione

Un attaccante induce un utente a utilizzare un ID di sessione già noto all'attaccante, quindi dirotta la sessione dopo l'accesso.

Prevenzione della fissazione: session_regenerate_id()

Dopo qualsiasi modifica dei privilegi (accesso, modifica del ruolo), generi un nuovo ID di sessione mantenendo i dati della sessione esistente.

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

Dirottamento della sessione

Un attaccante ruba l'ID di sessione tramite sniffing della rete, XSS o fuga di dati dai log. Mitigare il rischio con HTTPS, cookie HttpOnly e fingerprinting.

session.cookie_httponly

Impedire a JavaScript di leggere il cookie di sessione: questo blocca la maggior parte dei furti di sessione basati su XSS.

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

session.cookie_secure

Contrassegnare il cookie di sessione come Secure, in modo che venga inviato solo tramite HTTPS.

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

session.cookie_samesite

Impostare SameSite su Strict o Lax per prevenire gli attacchi CSRF che utilizzano il cookie di sessione.

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

Associazione allo User-Agent

Memorizzare lo User-Agent nella sessione al momento dell'accesso e verificarlo a ogni richiesta per rilevare eventuali dirottamenti.

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

Timeout della sessione

Implementare timeout basati sull'attività e disconnettere automaticamente gli utenti inattivi.

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

Abilitare la modalità strict, in modo che il server rifiuti gli ID di sessione non riconosciuti: questo previene il session fixation tramite iniezione nell'URL.

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

Gestori di sessione personalizzati

Memorizzare le sessioni in Redis o in un database consente di invalidare centralmente tutte le sessioni di un utente e di monitorare quelle attive.

Rigenerazione periodica

Anche durante una sessione autenticata di lunga durata, rigenerare l'ID di sessione ogni 15-30 minuti per ridurre il rischio di furto del token.

Riepilogo

Utilizzare sempre HTTPS, impostare i flag HttpOnly+Secure+SameSite, chiamare session_regenerate_id(true) dopo l'accesso, implementare timeout di inattività e utilizzare la modalità strict.

Verifica rapida

Che cosa fa session_regenerate_id(true)?

Domande Frequenti

La lezione «Best practice per la sicurezza delle sessioni» è gratuita?

Sì — il testo completo di «Best practice per la sicurezza delle sessioni» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso PHP Academy, passa a CoddyKit PRO. Il corso PHP Academy include 4 lezioni in totale.

Cosa imparerò in «Best practice per la sicurezza delle sessioni»?

Prevenire il session fixation e il session hijacking con la rigenerazione e i flag. Eserciti PHP Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare PHP Academy?

Non è richiesta alcuna esperienza precedente. PHP Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Best practice per la sicurezza delle sessioni»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione PHP Academy?

Sì. Ogni lezione PHP Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Avvio e uso delle sessioni
  2. Best practice per la sicurezza delle sessioni
  3. Impostazione e lettura dei cookie
  4. Sicurezza dei cookie: flag HttpOnly e Secure
← Torna a PHP Academy