Différences entre les cookies et les sessions?

154

Je suis en formation en développement web et j'apprends JSP & Servlets . J'ai une certaine connaissance deHttpSession - je l'ai utilisé dans certains de mes exemples de projets.

Dans les navigateurs, j'ai vu l'option "supprimer les cookies". Si je supprime les cookies, cela supprime leHttpSession également .

Les cookies et la session sont-ils identiques? Quelles sont les différences entre eux?

tigre noir
la source
Voir aussi cette question: < stackoverflow.com/questions/356562/… > Plus précisément, les remarques sur les cookies signés.
Joel Coehoorn
Je pense que la deuxième réponse à cette question est plus appropriée, si vous sélectionnez cela comme meilleure réponse, beaucoup de gens la liront.
Suraj Jain

Réponses:

180

Les sessions sont des fichiers côté serveur contenant des informations utilisateur, tandis que les cookies sont des fichiers côté client contenant des informations utilisateur. Les sessions ont un identifiant unique qui les mappe à des utilisateurs spécifiques. Cet identifiant peut être transmis dans l'URL ou enregistré dans un cookie de session.

La plupart des sites modernes utilisent la deuxième approche, en enregistrant l'identifiant dans un cookie au lieu de le transmettre dans une URL (ce qui pose un risque de sécurité). Vous utilisez probablement cette approche sans le savoir, et en supprimant les cookies, vous effacez efficacement leurs sessions correspondantes lorsque vous supprimez l'identifiant de session unique contenu dans les cookies.

Eran Galperin
la source
10
"en le passant dans une URL (ce qui pose un risque de sécurité). " En fait, les deux approches comportent des risques de sécurité (différents). L'identifiant secret dans l'URL peut être sécurisé s'il est fait correctement et si l'utilisateur comprend que l'URL est secrète et ne peut jamais être publiée dans un forum public.
curiousguy
1
"L'identifiant peut être transmis dans l'URL ou enregistré dans un cookie de session." . Où? côté client ou serveur? merci d'avoir clarifié davantage.
Adib Aroui
4
@whitelettersandblankspaces Le cookie de session est stocké sur le client (et sa valeur contient l'identifiant de session unique qui est envoyé avec chaque demande de mappage de la session du navigateur sur la session utilisateur sur le serveur).
WynandB
306

Un cookie est simplement une courte chaîne de texte qui est envoyée dans les deux sens entre le client et le serveur. Vous pouvez stocker name=bob; password=asdfasdans un cookie et l'envoyer dans les deux sens pour identifier le client côté serveur. Vous pourriez penser à cela comme à un échange avec un caissier de banque qui n'a pas de mémoire à court terme et qui a besoin que vous vous identifiiez pour chaque transaction. Bien sûr, l'utilisation d'un cookie pour stocker ces informations est horriblement peu sûre. Les cookies sont également limités en taille.

Désormais, lorsque le caissier de banque connaît son problème de mémoire, il / elle peut noter vos informations sur un morceau de papier et vous attribuer un numéro d'identification court. Ensuite, au lieu de donner votre numéro de compte et votre permis de conduire pour chaque transaction, vous pouvez simplement dire «Je suis client 12»

Traduire cela aux serveurs Web: Le serveur stockera les informations pertinentes dans l'objet de session et créera un identifiant de session qu'il renverra au client dans un cookie. Lorsque le client renvoie le cookie, le serveur peut simplement rechercher l'objet de session à l'aide de l'ID. Ainsi, si vous supprimez le cookie, la session sera perdue.

Une autre alternative est que le serveur utilise la réécriture d'URL pour échanger l'identifiant de session.

Supposons que vous ayez un lien - www.myserver.com/myApp.jsp Vous pouvez parcourir la page et réécrire chaque URL commewww.myserver.com/myApp.jsp?sessionID=asdf ou même www.myserver.com/asdf/myApp.jspet échanger l'identifiant de cette façon. Cette technique est gérée par le conteneur d'application Web et est généralement activée en définissant la configuration pour utiliser des sessions sans cookie.

Chris Cudmore
la source
29
C'est une merveilleuse explication ancrée dans une grande analogie du monde réel. Cette réponse devrait être davantage votée. Très accessible aux débutants qui sont les plus susceptibles de poser une telle question.
user798719
2
Que se passe-t-il si je suis un utilisateur et que quelqu'un d'autre connaît mon ID de session?
Maria Ines Parnisari
3
@ I19 Peut-être qu'ils peuvent se faire passer pour vous. Cela s'est produit dans des scénarios de jeu en ligne: reniflez le wifi de l'hôtel, volez un identifiant de session et accédez au compte. Sécuriser une session est une tout autre histoire.
Chris Cudmore
2
Alors, qui crée le cookie en premier? Serveur ou client? Ou est-ce que cela dépend de l'application? (Je dirais serveur car sinon, il pose des menaces de sécurité, mais je pense que cela vaut la peine de le mentionner?)
nha
4
@nha Le serveur crée la session et la transmet dans la réponse avec le cookie. La session est créée en fonction de la logique de l'application lorsque vous souhaitez qu'elle soit créée. Le client peut également créer un cookie, mais il peut ne pas être d'une grande utilité dans le scénario d'identification de la session car le serveur peut ne pas savoir ce que la valeur représente dans la session.
Azeem
4

Les cookies et la session stockent tous deux des informations sur l'utilisateur (pour rendre la requête HTTP avec état) mais la différence est que les cookies stockent des informations côté client (navigateur) et les sessions stockent des informations côté serveur. Un cookie est limité en ce sens qu'il stocke des informations sur des utilisateurs limités et ne stocke qu'un contenu limité pour chaque utilisateur. Une session n'est pas limitée de cette manière.

sanjay singh
la source
1

Le cookie est essentiellement un tableau mondial accessible via les navigateurs Web. Plusieurs fois utilisé pour envoyer / recevoir des valeurs. il agit comme un mécanisme de stockage pour accéder aux valeurs entre les formulaires. Les cookies peuvent être désactivés par le navigateur ce qui ajoute une contrainte à leur utilisation par rapport à la session.

La session peut être définie comme quelque chose entre la connexion et la déconnexion. le temps entre la connexion et la déconnexion de l'utilisateur est une session. Session stocke les valeurs uniquement pour la durée de la session, c'est-à-dire avant la déconnexion. Les sessions sont utilisées pour suivre les activités de l'utilisateur, une fois qu'il se connecte.

RishikeshD
la source
0

Google JSESSIONID . Cela explique comment l'API Servlet utilise initialement la réécriture d'URL, puis, si les cookies sont activés, les cookies pour gérer les sessions.

HTTP étant sans état, le navigateur client doit envoyer l'ID de sa session au serveur à chaque requête. Le serveur, par quelque moyen que ce soit, utilise cet identifiant pour récupérer toutes les données de cette session, ce qui les rend disponibles pour la durée de vie de la demande.

Nick Holt
la source
0

Session sur Asp.net:

1.Maintient les données dans toute l'application.

2.Persiste les données si la session actuelle est active. Si nous avons besoin que certaines données soient accessibles à partir de plusieurs acitons et vues de contrôleurs, la session est le moyen de stocker et de récupérer des données.

Les sessions sont des fichiers côté serveur contenant des informations utilisateur. [Les sessions sont un identifiant unique qui les mappe à des utilisateurs spécifiques]

Traduire cela aux serveurs Web: Le serveur stockera les informations pertinentes dans l'objet de session et créera un identifiant de session qu'il renverra au client dans un cookie. Lorsque le client renvoie le cookie, le serveur peut simplement rechercher l'objet de session à l'aide de l'ID. Ainsi, si vous supprimez le cookie, la session sera perdue.

Vicky
la source
0

Le cookie est un moyen de mettre en œuvre la session entre le client et le serveur, de cette manière les informations de session sont stockées dans le cookie. Mais ce n'est pas le seul moyen de conserver les informations de session, un autre moyen est de stocker les informations de session dans Url.

moins impressionnant
la source
0

Les cookies sont stockés dans le navigateur sous forme de fichier texte.Il est stocké en quantité limitée de données.Il n'autorise que 4kb [4096bytes] . $ _ La variable COOKIE ne contiendra pas plusieurs cookies du même nom

nous pouvons accéder facilement aux valeurs des cookies, ce qui est moins sécurisé . La fonction setcookie () doit apparaître AVANT le

<html> 

marque.

Les sessions sont stockées côté serveur.Il est stocké une quantité illimitée de données.Il contient la variable multiple dans les sessions. nous ne pouvons pas accéder facilement aux valeurs des cookies, donc c'est plus sécurisé .

Liens: différence-entre-cookies-et-sessions

Elangovan
la source
Eh bien, en fait, vous pouvez conserver plusieurs données dans des cookies. De plus, les sessions ne peuvent pas vraiment contenir une quantité illimitée de données. Vous êtes assez limité par la quantité de RAM dont vous disposez.
Koray Tugay