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.
1 2 3 | 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
1 2 3 4 5 6 7 | // 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
1 2 3 4 5 6 7 | // 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.
Post a Comment