Un session ID, qu’est-ce que c’est ?
Imaginez un grand centre de congrès qui organise simultanément différents évènements. Vous avez décidé de participer à un de ces évènements, vous récupérez votre vignette ou badge afin de pouvoir accéder à la salle principale. Vous êtes ainsi identifié par l’administrateur comme participant à cet évènement. Dans cet exemple, le centre de congrès est le serveur, l’évènement est l’équivalent de l’adresse Internet et votre badge, l’identificateur de session ou session ID.
Avec ce type d’identificateur de session, le visiteur d’un site Web est clairement identifié. Il reçoit un badge électronique attribué par le serveur. L’identificateur de session est également appelé session, ID session ou jeton de session. Découvrez dans cet article comment est générée une session lors de la visite d’un site Web et les raisons de l’utilisation des identificateurs de session.
- Domaine .eu ou .fr + éditeur de site gratuit pendant 6 mois
- 1 certificat SSL Wildcard par contrat
- Boîte email de 2 Go
Où et pourquoi utilise-t-on les identificateurs de session ?
Un identificateur de session est un outil technique qui permet d’identifier clairement l’utilisateur d’un site Web pour lui attribuer une session. L’identificateur de session permet l’accès aux données de la dernière session de l’utilisateur. Ces données sont enregistrées sur le serveur du site Web. L’identificateur est une suite de chiffres. Par exemple, la chaîne suivante d’un session ID de 32 caractères a été générée et affichée en utilisant PHP :
<?php
session_start();
echo "Le session ID est :". session_id();
$sid=session_id(); // génère une variable avec l’identificateur de session
?>
Si vous disposez de votre propre espace Web avec un accès FTP, vous pouvez facilement tester ces trois lignes de code. En tant qu’appel test, cela génère pour cette session spéciale la tâche « L’identificateur de session est : 84266fdbd31d4c2c6d0665f7e8380fa3 ».
Cette valeur est transférée du serveur à l’utilisateur lors de la consultation du contenu et attribue le contenu associé à la dernière session du serveur. L’utilisateur conserve l’anonymat sur ses données personnelles, cette valeur identifie simplement qu’il s’agit d’un utilisateur qui a déjà utilisé le site. Sans cet identificateur, le serveur identifie la requête comme une nouvelle requête et génère un nouvel identificateur de session.
Mais à quoi cela sert-il au juste ? L’un des principaux intérêts des identificateurs de session se manifeste dans le domaine du e-commerce. L’identificateur de session est utilisé par exemple pour attribuer à un client le contenu d’un panier ou le dernier article consulté dans une boutique en ligne. Cela augmente le confort utilisateur, ce qu’on appelle la convivialité d’un site Web. Sur la base des données des sites Web visités stockées temporairement, il est possible d’identifier les contenus qui ont été consultés. Cette méthode offre une autre fonction très pratique : grâce à ces informations, autrement dit grâce à l’identificateur de session, la publicité (bannière, pop-up, liens, etc.) peut proposer des produits susceptibles d’intéresser l’utilisateur, ce qui permet d’augmenter le taux de conversion.
Fonctionnement d’un identificateur de session
Au début de chaque session, l’identificateur de session est généré par le serveur et transmis au navigateur de l’utilisateur où il est enregistré. Toutes les données en lien avec cette session sont enregistrées sur le serveur Web dans un répertoire spécialement prévu à cet effet sur le disque dur du serveur. En général, il s’agit d’un répertoire temporaire appelé « …/tmp ». Les données enregistrées à cet emplacement contiennent, en plus de l’identificateur de session, d’autres informations comme l’identificateur utilisateur, si celui-ci est nécessaire sur le site, et le contenu d’un panier. Un tel fichier peut alors avoir le contenu suivant :
/tmp/sess_84266fdbd31d4c2c6d0665f7e8380fa3
UserID|i:1142;MyCart|a:2:{i:0;s:8:"Item_Nr01";i:1;s:8:"Item_Nr02";}
Le paragraphe suivant revient sur les deux principales techniques utilisées pour transmettre un session ID.
Comment un identificateur de session est-il transmis à un utilisateur et inversement ?
Il existe deux méthodes de transmission d’un identificateur de session.
Transmettre le session ID par URL
Après la consultation initiale d’un site Web, les demandes suivantes d’un utilisateur sont exécutées en cliquant sur les liens ou par envoi de formulaires. Une fois que l’identificateur de session attribué est transmis, il modifie l’URI (Uniform Resource Identifier) en ajoutant l’identificateur de session comme variable à l’URL. Le lien ci-dessous illustre cet exemple avec la variable $sid :
<a href="https://www.domainesouhaite.fr/cart.php?sid=$sid">www.domainesouhaite.fr</a>
Génère le lien suivant dans le navigateur :
https://www.domainesouhaite.fr/cart.php?sid=84266fdbd31d4c2c6d0665f7e8380fa3
Une autre possibilité est de définir l’identificateur de session en tant que chemin :
<a href="https://www.domainesouhaite.fr/$sid/cart.php">www.domainesouhaite.fr</a>
Ainsi on obtient le lien ci-dessous dans le navigateur :
https://www.domainesouhaite.fr/84266fdbd31d4c2c6d0665f7e8380fa3/cart.php
Le serveur est alors configuré pour insérer le session ID en tant que chemin dans les requêtes de l’utilisateur correspondant et ainsi procéder à l’identification.
Cela peut également être fait avec les champs de formulaire en « enveloppant » l’identificateur de session une fois généré dans un champ de formulaire caché :
<form method="post" action="/executer_action"></form>
<input type="text" name="N°Client">
<input type="hidden" name="sessionId" value="$sid">
< … >
L’identificateur de session sera retransmis au serveur grâce à la méthode POST. Les sessions respectives de l’utilisateur sont identifiées.
Transmettre le session ID par l’entête HTTP
C’est dans ce cadre qu’interviennent les cookies. Un cookie est, comme expliqué depuis un moment sur presque tous les sites Web, un petit fichier de texte. Il s’agit d’une extension du protocole HyperText Transfer Protocol (HTTP). Ces fichiers textes sont enregistrés localement dans l’appareil de l’utilisateur et contiennent le session ID. Lors d’une nouvelle requête auprès du serveur, le contenu de ces cookies de session sera transmis au serveur qui a également enregistré temporairement l’identificateur de session. Si le contenu des cookies de l’utilisateur et son identificateur de session correspondent, alors la requête est autorisée.
Selon les directives du RGPD en avril 2021, un cookie de session est considéré comme un cookie indispensable. Il n’est donc pas nécessaire de demander activement la permission pour ces cookies spéciaux. Cela ne dispense cependant pas de les mentionner.
Le fait que de tels fichiers soient utilisés se traduit par exemple par le fait qu’une fois les données du formulaire saisies, il n’est pas nécessaire de les saisir à nouveau dans le champ correspondant lorsque le formulaire est consulté à plusieurs reprises. Dès la première lettre, l’entrée précédemment effectuée apparaît comme une suggestion.
Les sessions ID sont-ils sécurisés ?
En général, les identificateurs de session ne garantissent pas une navigation sécurisée. Avec les connaissances nécessaires en programmation, vous pouvez détourner du contenu sans être repéré pendant une session. C’est ce qu’on appelle le détournement de session (Session Hijacking).
Les identificateurs de session transmis aux utilisateurs et enregistrés par cookies de session sont automatiquement supprimés dès que le navigateur est complètement fermé. Ne fermer que les onglets ouverts ne suffit pas. Les cookies de session, contrairement aux cookies stockés en permanence ou plus longtemps, ne représentent donc pas un risque accru pour la sécurité.