Sessions

Désactiver les identifiants de sessions dans les URLS

En activant « session.use-only-cookies », vous éviterez les attaques qui utilisent des identifiants de sessions dans les URLS.

Le système de gestion des sessions par URL pose un risque supplémentaire de sécurité : un utilisateur peut envoyer son URL avec l’identifiant de session par email à un ami, ou bien le mettre dans ses signets. Cela diffusera alors l’identifiant de session. On le désactive donc.

ini_set('session.use_only_cookies', 1);
ini_set('session.use_trans_sid');', 0);
session_start();

Initialiser les sessions

Session fixation

Quelques explications : http://en.wikipedia.org/wiki/Session_fixation

// Session fixation
// On vérifie qu'une valeur connue de nous même (ici "no_fixation") est présente 
// en session, sinon on regénère la session.
if (!isset($_SESSION['no_fixation'])) {
    session_regenerate_id(true); 
    $_SESSION['no_fixation'] = true;
}

Session hijacking

Quelques explications : http://en.wikipedia.org/wiki/Session_hijacking

// Session hijacking
$signature = md5($_SERVER['HTTP_USER_AGENT'] .  $_SERVER['HTTP_ACCEPT_CHARSET'] . SALT);
if (!isset($_SESSION['signature'])) {
    $_SESSION['signature' ] = $signature;
} elseif ($_SESSION['signature'] !== $signature) {
    die('Erreur de session ' );
}

Attention !
J’ai remarqué que sous certains navigateurs l’entête Accept n’est pas forcément consistant d’une page à l’autre, notamment en actualisant une page. C’est donc un entête à éviter pour la signature.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.