web-dev-qa-db-fra.com

Quelle est la différence entre une session et un cookie?

Quelle est la différence entre une session et un cookie?

Quelles circonstances faut-il utiliser?

32
EvilBoy

Sessions 

Les sessions sont stockées par utilisateur dans la mémoire (ou dans une alternative Session-State ) sur le serveur. Les sessions utilisent un cookie (clé de session _) pour lier l'utilisateur à la session. Cela signifie qu'aucune donnée "sensible" n'est stockée dans le cookie de la machine de l'utilisateur. 

Les sessions sont généralement utilisées pour conserver l'état lorsque vous naviguez sur un site Web. Cependant, ils peuvent également être utilisés pour contenir des objets couramment utilisés. Uniquement si l'état de session est défini sur InProc, s'il est défini sur un autre mode d'état de session l'objet doit également être sérialisable.

Session["userName"] = "EvilBoy";

if(Session["userName"] != null)
  lblUserName.Text = Session["userName"].ToString();

Biscuits

Les cookies sont stockés par utilisateur sur la machine de l'utilisateur. Un cookie est généralement juste un peu d'information. Les cookies sont généralement utilisés pour les préférences de couleurs des paramètres utilisateur simples, etc. Aucune information sensible ne devrait jamais être stockée dans un cookie. 

Vous ne pouvez jamais être totalement sûr qu'un cookie n'a pas été falsifié par un utilisateur ou une source externe. Cependant, si la sécurité est une préoccupation majeure et que vous devez utiliser des cookies, vous pouvez alors crypter vos cookies ou les configurer pour qu'ils ne soient transmis que par SSL. Un utilisateur peut supprimer ses cookies à tout moment ou ne pas en autoriser totalement. Vous ne pouvez donc pas compter sur leur présence uniquement parce qu'un utilisateur a déjà visité votre site.

//add a username Cookie
Response.Cookies["userName"].Value = "EvilBoy";
Response.Cookies["userName"].Expires = DateTime.Now.AddDays(10);
//Can Limit a cookie to a certain Domain
Response.Cookies["domain"].Domain = "Stackoverflow.com";

//request a username cookie
if(Request.Cookies["userName"] != null)
   lblUserName.Text = Server.HtmlEncode(Request.Cookies["userName"].Value);

sidenote

Il est à noter que ASP.NET prend également en charge cookieless state-management

56
cgreeno

Cookie est un stockage côté client de vos variables. Il stocké sur la machine cliente par navigateur physiquement. Sa portée est large comme une machine. Différents utilisateurs d'une même machine peuvent lire le même cookie.

À cause de ce :

  1. Vous ne devriez pas stocker de données sensibles sur les cookies. 
  2. Vous ne devez pas stocker de données appartenant à un compte d'utilisateur.
  3. Le cookie n'a aucun effet sur les ressources du serveur.
  4. Le cookie expire à une date spécifiée par vous.

Session est un stockage côté serveur de vos variables. Par défaut, il est stocké dans la mémoire du serveur. Mais vous pouvez le configurer pour stocker sur SqlServer. Sa portée est large navigateur. Le même utilisateur peut exécuter deux navigateurs ou plus et chaque navigateur a sa propre session.

À cause de ce : 

  1. Vous pouvez enregistrer des données sensibles en session.
  2. Vous ne devriez pas tout sauvegarder en session. c'est un gaspillage de ressources du serveur.
  3. Lorsque l'utilisateur ferme le navigateur, le délai d'expiration de la session efface toutes les informations. (20 minutes par défaut)
13
Canavar

Un cookie est une chaîne d'identifaction stockée par un serveur (qui a un domaine) dans le navigateur de l'utilisateur qui visite le serveur/domaine.

Une session est une unité de variables, d’état, de paramètres lorsqu'un utilisateur donné accède à un serveur/domaine dans un laps de temps déterminé. Toutes les informations de session sont dans le modèle traditionnel stocké sur le serveur (!)

Étant donné que de nombreux utilisateurs simultanés peuvent visiter un serveur/domaine en même temps, le serveur doit pouvoir distinguer plusieurs sessions simultanées et toujours attribuer la bonne session au bon utilisateur. (Et aucun utilisateur ne peut "voler" la session d'un autre utilisateur)

Cela se fait par le cookie. Le cookie qui est stocké dans le navigateur et qui devrait dans ce cas être une combinaison aléatoire telle que s73jsd74df4fdf (afin qu’il ne puisse pas le deviner) est envoyé à chaque demande du navigateur au serveur et le serveur peut attribuer et utiliser ses réponses (pages vues)

Le cookie permet au serveur de reconnaître le navigateur/l'utilisateur. La session permet au serveur de mémoriser des informations entre différentes vues de page.

10
Karl Thorwald

Il est possible d'avoir les deux: une clé primaire de base de données est hachée et stockée dans une table de recherche: le hachage est ensuite stocké sur le client sous forme de cookie. Une fois que le cookie de hachage (hahhahaha :) est envoyé, la clé primaire correspondante est recherchée et les autres détails lui sont associés dans une autre table de la base de données du serveur.

2
Joe

La session est un objet côté serveur, Qui transfère ou accède aux données entre les appels de pages.
Cookies est un objet côté client/ordinateur client qui stocke des informations textuelles du navigateur et du serveur. 

1
raghav

Les sessions ne dépendent pas de l'utilisateur autorisant un cookie. Ils fonctionnent plutôt comme un jeton permettant l’accès et la transmission d’informations pendant que l’utilisateur a son navigateur ouvert. Le problème avec les sessions est que lorsque vous fermez votre navigateur, vous perdez également la session. Ainsi, si vous avez un site nécessitant une connexion, celle-ci ne peut pas être enregistrée en tant que session, contrairement à un cookie, et l'utilisateur est obligé de se reconnecter chaque fois qu'il visite. 

1
Shankar kumar
  • La principale différence entre les cookies et les sessions est que les cookies sont stockés dans le navigateur de l'utilisateur et que les sessions ne le sont pas. Cette différence détermine ce que chacun utilise le mieux. 

  • Un cookie peut conserver des informations dans le navigateur de l'utilisateur jusqu'à leur suppression. Si une personne a un identifiant et un mot de passe, celui-ci peut être défini comme un cookie dans son navigateur, de sorte qu'il ne soit pas nécessaire de se reconnecter à votre site Web à chaque visite. Vous pouvez stocker presque n'importe quoi dans un cookie de navigateur. 

0
Shankar kumar

Il semble y avoir une certaine confusion quant à ce qu’est un cookie de session. 

Tout d'abord, lorsque nous parlons de cookies de session, cela n'a rien à voir avec les sessions ASP.Net. De même, les cookies de session n'ont rien à voir avec les processus côté serveur ou la mise en cache.

Un cookie de session n'est rien d'autre qu'un cookie qui expire à l'expiration de la session du navigateur. Pour créer un cookie de session, n'indiquez pas de date d'expiration. Cela permet de stocker le cookie en mémoire et de le supprimer lorsque le navigateur est supprimé.

0
Sean Mc