Faisons le tour de la question :
Cookies y sessions sont tous deux des moyens de préserver l'état de l'application entre les différentes requêtes effectuées par le navigateur. C'est grâce à elles que, par exemple, vous n'avez pas besoin de vous connecter à chaque fois que vous demandez une page de StackOverflow .
Cookies
Les cookies sont de petits morceaux de données (d'une longueur maximale de 4 Ko), qui contiennent des données dans une paire clé-valeur :
name=value; name2=value2
Ceux-ci sont définis soit par JavaScript ou via le serveur en utilisant un En-tête HTTP .
Les cookies ont une date d'expiration définie, par exemple à l'aide des en-têtes HTTP :
Set-Cookie: name2=value2; Expires=Wed, 19 Jun 2021 10:18:14 GMT
Ce qui amènerait le navigateur à créer un cookie nommé name2
avec une valeur de value2
qui expirerait dans environ 9 ans.
Les cookies sont considérés comme fortement insécurisé car l'utilisateur peut facilement manipuler leur contenu. C'est pourquoi vous devez toujours valider les données des cookies . Ne supposez pas que ce que vous obtenez d'un cookie est nécessairement ce que vous attendez.
Les cookies sont généralement utilisés pour préserver l'état de connexion, où un nom d'utilisateur et un hachage spécial sont envoyés par le navigateur, et le serveur les vérifie dans la base de données pour autoriser l'accès.
Les cookies sont également souvent utilisés dans sessions création.
Sessions
Les sessions sont légèrement différentes. Chaque utilisateur reçoit un ID de la session qui est renvoyé au serveur pour validation soit par cookie ou par GET variable .
Les sessions sont généralement de courte durée, ce qui les rend idéales pour sauvegarder l'état temporaire entre les applications. Les sessions expirent également lorsque l'utilisateur ferme le navigateur.
Les sessions sont considérées comme plus sûres que les cookies car les variables elles-mêmes sont conservées sur l'ordinateur de l'utilisateur. serveur . Voici comment cela fonctionne :
- Le serveur ouvre une session (définit un cookie via l'en-tête HTTP).
- Le serveur définit une variable de session.
- Page des modifications apportées par le client
- Le client envoie tous les cookies, ainsi que l'ID de session de l'étape 1.
- Le serveur lit l'ID de la session à partir du cookie.
- Le serveur fait correspondre l'ID de la session à une liste dans une base de données (ou dans la mémoire, etc.).
- Le serveur trouve une correspondance, lit les variables qui sont maintenant disponibles sur
$_SESSION
superglobal.
Si PHP ne trouve pas de correspondance, il démarre une nouvelle session, et répète les étapes de 1 à 7.
Vous pouvez stocker des informations sensibles dans une session car elles sont conservées sur le serveur, mais sachez que l'ID de session peut toujours être volé si l'utilisateur, par exemple, se connecte via un réseau WiFi non sécurisé. (Un attaquant peut renifler les cookies et les définir comme les siens, il ne verra pas les variables elles-mêmes, mais le serveur identifiera l'attaquant comme l'utilisateur).
C'est l'essentiel. Vous pouvez en apprendre davantage sur ces deux sujets dans le manuel PHP.