Imaginez un grand centre de congrès qui organise si­mul­ta­né­ment dif­fé­rents évè­ne­ments. Vous avez décidé de par­ti­ci­per à un de ces évè­ne­ments, vous récupérez votre vignette ou badge afin de pouvoir accéder à la salle prin­ci­pale. Vous êtes ainsi identifié par l’ad­mi­nis­tra­teur comme par­ti­ci­pant à cet évènement. Dans cet exemple, le centre de congrès est le serveur, l’évènement est l’équi­valent de l’adresse Internet et votre badge, l’iden­ti­fi­ca­teur de session ou session ID.

Avec ce type d’iden­ti­fi­ca­teur de session, le visiteur d’un site Web est clai­re­ment identifié. Il reçoit un badge élec­tro­nique attribué par le serveur. L’iden­ti­fi­ca­teur 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’uti­li­sa­tion des iden­ti­fi­ca­teurs de session.

Nom de domaine
Votre domaine en un clic
  • 1 cer­ti­fi­cat SSL Wildcard par contrat
  • Fonction incluse Domain Connect pour une con­fi­gu­ra­tion DNS sim­pli­fiée

Où et pourquoi utilise-t-on les iden­ti­fi­ca­teurs de session ?

Un iden­ti­fi­ca­teur de session est un outil technique qui permet d’iden­ti­fier clai­re­ment l’uti­li­sa­teur d’un site Web pour lui attribuer une session. L’iden­ti­fi­ca­teur de session permet l’accès aux données de la dernière session de l’uti­li­sa­teur. Ces données sont en­re­gis­trées sur le serveur du site Web. L’iden­ti­fi­ca­teur est une suite de chiffres. Par exemple, la chaîne suivante d’un session ID de 32 ca­rac­tè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 fa­ci­le­ment tester ces trois lignes de code. En tant qu’appel test, cela génère pour cette session spéciale la tâche « L’iden­ti­fi­ca­teur de session est : 84266fdbd31d4c2c6d0665f7e8380fa3 ».

Cette valeur est trans­fé­rée du serveur à l’uti­li­sa­teur lors de la con­sul­ta­tion du contenu et attribue le contenu associé à la dernière session du serveur. L’uti­li­sa­teur conserve l’anonymat sur ses données per­son­nelles, cette valeur identifie sim­ple­ment qu’il s’agit d’un uti­li­sa­teur qui a déjà utilisé le site. Sans cet iden­ti­fi­ca­teur, le serveur identifie la requête comme une nouvelle requête et génère un nouvel iden­ti­fi­ca­teur de session.

Mais à quoi cela sert-il au juste ? L’un des prin­ci­paux intérêts des iden­ti­fi­ca­teurs de session se manifeste dans le domaine du e-commerce. L’iden­ti­fi­ca­teur 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 uti­li­sa­teur, ce qu’on appelle la con­vi­via­lité d’un site Web. Sur la base des données des sites Web visités stockées tem­po­rai­re­ment, il est possible d’iden­ti­fier les contenus qui ont été consultés. Cette méthode offre une autre fonction très pratique : grâce à ces in­for­ma­tions, autrement dit grâce à l’iden­ti­fi­ca­teur de session, la publicité (bannière, pop-up, liens, etc.) peut proposer des produits sus­cep­tibles d’in­té­res­ser l’uti­li­sa­teur, ce qui permet d’augmenter le taux de con­ver­sion.

Fonc­tion­ne­ment d’un iden­ti­fi­ca­teur de session

Au début de chaque session, l’iden­ti­fi­ca­teur de session est généré par le serveur et transmis au na­vi­ga­teur de l’uti­li­sa­teur où il est en­re­gis­tré. Toutes les données en lien avec cette session sont en­re­gis­trées sur le serveur Web dans un ré­per­toire spé­cia­le­ment prévu à cet effet sur le disque dur du serveur. En général, il s’agit d’un ré­per­toire tem­po­raire appelé « …/tmp ». Les données en­re­gis­trées à cet em­pla­ce­ment con­tien­nent, en plus de l’iden­ti­fi­ca­teur de session, d’autres in­for­ma­tions comme l’iden­ti­fi­ca­teur uti­li­sa­teur, si celui-ci est né­ces­saire 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 pa­ra­graphe suivant revient sur les deux prin­ci­pales tech­niques utilisées pour trans­mettre un session ID.

Comment un iden­ti­fi­ca­teur de session est-il transmis à un uti­li­sa­teur et in­ver­se­ment ?

Il existe deux méthodes de trans­mis­sion d’un iden­ti­fi­ca­teur de session.

Trans­mettre le session ID par URL

Après la con­sul­ta­tion initiale d’un site Web, les demandes suivantes d’un uti­li­sa­teur sont exécutées en cliquant sur les liens ou par envoi de for­mu­laires. Une fois que l’iden­ti­fi­ca­teur de session attribué est transmis, il modifie l’URI (Uniform Resource Iden­ti­fier) en ajoutant l’iden­ti­fi­ca­teur 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 na­vi­ga­teur :

https://www.domainesouhaite.fr/cart.php?sid=84266fdbd31d4c2c6d0665f7e8380fa3

Une autre pos­si­bi­lité est de définir l’iden­ti­fi­ca­teur 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 na­vi­ga­teur :

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’uti­li­sa­teur cor­res­pon­dant et ainsi procéder à l’iden­ti­fi­ca­tion.

Cela peut également être fait avec les champs de for­mu­laire en « en­ve­lop­pant » l’iden­ti­fi­ca­teur de session une fois généré dans un champ de for­mu­laire caché :

<form method="post" action="/executer_action"></form>
	<input type="text" name="N°Client">
	<input type="hidden" name="sessionId" value="$sid">
	< … >

L’iden­ti­fi­ca­teur de session sera re­trans­mis au serveur grâce à la méthode POST. Les sessions res­pec­tives de l’uti­li­sa­teur sont iden­ti­fiées.

Trans­mettre le session ID par l’entête HTTP

C’est dans ce cadre qu’in­ter­vien­nent 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 en­re­gis­trés lo­ca­le­ment dans l’appareil de l’uti­li­sa­teur et con­tien­nent 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 en­re­gis­tré tem­po­rai­re­ment l’iden­ti­fi­ca­teur de session. Si le contenu des cookies de l’uti­li­sa­teur et son iden­ti­fi­ca­teur de session cor­res­pon­dent, alors la requête est autorisée.

Note

Selon les di­rec­tives du RGPD en avril 2021, un cookie de session est considéré comme un cookie in­dis­pen­sable. Il n’est donc pas né­ces­saire de demander ac­ti­ve­ment la per­mis­sion pour ces cookies spéciaux. Cela ne dispense cependant pas de les men­tion­ner.

Le fait que de tels fichiers soient utilisés se traduit par exemple par le fait qu’une fois les données du for­mu­laire saisies, il n’est pas né­ces­saire de les saisir à nouveau dans le champ cor­res­pon­dant lorsque le for­mu­laire est consulté à plusieurs reprises. Dès la première lettre, l’entrée pré­cé­dem­ment effectuée apparaît comme une sug­ges­tion.

Les sessions ID sont-ils sécurisés ?

En général, les iden­ti­fi­ca­teurs de session ne ga­ran­tis­sent pas une na­vi­ga­tion sécurisée. Avec les con­nais­sances né­ces­saires en pro­gram­ma­tion, vous pouvez détourner du contenu sans être repéré pendant une session. C’est ce qu’on appelle le dé­tour­ne­ment de session (Session Hijacking).

Les iden­ti­fi­ca­teurs de session transmis aux uti­li­sa­teurs et en­re­gis­trés par cookies de session sont au­to­ma­ti­que­ment supprimés dès que le na­vi­ga­teur est com­plè­te­ment fermé. Ne fermer que les onglets ouverts ne suffit pas. Les cookies de session, con­trai­re­ment aux cookies stockés en per­ma­nence ou plus longtemps, ne re­pré­sen­tent donc pas un risque accru pour la sécurité.

Aller au menu principal