Skip to content
Gérits Aurélien edited this page Feb 13, 2026 · 3 revisions

La classe Session gère le cycle de vie des sessions utilisateur. Elle sécurise les données via le Fingerprinting (IP + User Agent) et fournit un système robuste de protection contre les failles CSRF.

Namespace : Magepattern\Component\HTTP\Session

Liste des méthodes

Méthode Paramètres Retour Description
__construct() bool $ssl, string $name, array $config void Initialise la session avec des clés personnalisées.
start() int $lifetime bool Démarre la session avec les paramètres de sécurité (HttpOnly, SameSite).
regenerate() bool $deleteOld string Génère un nouvel ID de session (prévention de fixation).
getToken() bool $force string Génère ou récupère le jeton CSRF de la session.
validateToken() ?string $token bool Vérifie si le jeton fourni correspond à celui en session.
set() string $key, mixed $val void Enregistre une donnée en session.
get() string $key, mixed $def mixed Récupère une donnée ou une valeur par défaut.
destroy() - void Supprime les données et détruit le cookie de session.

Configuration & Initialisation

L'instanciation permet de définir les noms des clés utilisées dans le tableau $_SESSION, ce qui est idéal pour éviter les conflits ou s'adapter à une structure de base de données.

use Magepattern\Component\HTTP\Session;

$session = new Session(true, 'MY_APP_SID', [
    'ip_key'   => 'user_ip_addr',
    'csrf_key' => 'form_security_hash'
]);

$session->start();

Sécurité (Anti-Hijacking)

À chaque démarrage, la classe vérifie l'empreinte numérique du visiteur. Si l'adresse IP ou le navigateur change brusquement alors que la session est active, la session est invalidée pour empêcher le vol de session.

Exemple concret : Formulaire sécurisé

  1. Affichage (Génération du Token)
<input type="hidden" name="token" value="<?= $session->getToken(); ?>">
  1. Valider un jeton (Contrôleur)
if ($session->validateToken($_POST['_token'] ?? null)) {
    // Le formulaire est valide
} else {
    // Tentative de faille CSRF détectée
    Logger::getInstance()->log("CSRF Failure", "security", "warning");
}

Référence des Méthodes

get(string $key, mixed $default = null): mixed Récupère une donnée en session. Retourne $default si la clé n'existe pas.

set(string $key, mixed $value): void Définit une donnée en session (démarre la session automatiquement si nécessaire).

regenerate(bool $deleteOldSession = true): string Régénère l'identifiant de session. Note : Il est crucial d'appeler cette méthode dès qu'un utilisateur change de statut (ex: passage de visiteur à membre connecté).

Exemple Complet : Flux de Connexion

public function loginAction($email, $password) {
    if ($this->auth->verify($email, $password)) {
        // 1. Sécurisation immédiate
        $this->session->regenerate(true);
        
        // 2. Stockage des infos
        $this->session->set('user_id', $user->id);
        $this->session->set('logged_at', time());
        
        return true;
    }
    return false;
}

Clone this wiki locally