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?

31
demandé sur cgreeno 2009-03-08 19:26:59

8 réponses

Sessions

les Sessions sont stockées par utilisateur en mémoire(ou une alternative ) 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 sur la machine de l'utilisateur.

Sessions sont généralement utilisés pour maintenir l'état lorsque vous naviguer sur un site web. Cependant, ils peuvent aussi être utilisés pour contenir des objets fréquemment consultés. seulement si L'état Session est défini à InProc, si défini à un autre mode Session-État l'objet doit aussi sérialisable.

Session["userName"] = "EvilBoy";

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

Cookies

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 paramètres utilisateur simples couleurs préférences ect. aucune information sensible ne doit jamais être stockée dans un cookie.

vous ne pouvez jamais entièrement croire qu'un cookie n'a pas été altéré par un utilisateur ou une source externe.cependant, si la sécurité est un grand problème et que vous devez utiliser des cookies, vous pouvez soit crypter vos cookies ou les configurer pour qu'ils ne soient transmis que via SSL. Un utilisateur peut effacer ses cookies à tout moment ou ne pas autoriser les cookies dans l'ensemble donc vous ne pouvez pas compter sur eux étant là juste parce qu'un utilisateur a visité votre site dans le passé.

//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);

note

il est intéressant de mentionner que ASP.NET soutient également cookieless state-management

53
répondu cgreeno 2016-06-23 06:33:47

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

pour cette raison:

  1. vous ne devez pas stocker des données sensibles sur cookie.
  2. vous ne devez pas stocker des données qui appartiennent à un compte d'utilisateur.
  3. Cookie n'a aucun effet sur les ressources du serveur.
  4. Cookie expire à la date indiquée par vous.

Session est un stockage côté serveur de vos variables. Par défaut, il stocké sur la mémoire du serveur. Mais vous pouvez le configurer pour le stocker sur SqlServer. Son champ d'application est un navigateur de large. Un utilisateur peut exécuter deux ou plusieurs navigateurs et chaque navigateur a sa propre session.

pour cette raison:

  1. vous pouvez enregistrer données sensibles en session.
  2. vous ne devez pas tout enregistrer en session. c'est du gaspillage de ressources de serveur.
  3. après que l'utilisateur ferme le navigateur, le délai de session efface toutes les informations. (la valeur par défaut est de 20 minutes)
11
répondu Canavar 2009-03-09 13:08:31

un cookie est une chaîne d'identification 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 peut-être variables, état, paramètres alors qu'un certain utilisateur accède à un serveur/domaine dans un laps de temps spécifique. Toutes les informations de session dans le modèle traditionnel stockés sur le serveur (!)

Parce que de nombreux utilisateurs simultanés peuvent visiter un serveur/domaine en même temps le serveur doit être capable de distinguer plusieurs sessions simultanées différentes et toujours attribuer la bonne session à l'utilisateur approprié. (Et aucun utilisateur ne peut "voler" la session d'une autre utilisation)

Ceci est fait à travers le cookie. Le cookie qui est stocké dans le navigateur et qui devrait dans ce cas être une combinaison aléatoire comme s73jsd74df4fdf (donc il ne peut pas être deviné) est envoyé sur chaque demande du navigateur au serveur, et le serveur peut assigner et utiliser la bonne session pour ses réponses (vue page)

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

10
répondu Karl Thorwald 2009-03-08 16:45:28

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: puis le hachage est stocké sur le client comme un cookie. Une fois que le cookie de hachage (hahhahaha :) est soumis, sa clé primaire correspondante est recherchée, et le reste des détails lui sont associés dans une autre table sur la base de données du serveur.

2
répondu Joe 2009-07-05 16:22:16

Session est un objet côté serveur, quelles données de transfert ou d'accès entre les appels de page.

Cookies est un objet qui est côté client/machine client qui stocke certaines informations textuelles du navigateur et du serveur.

1
répondu raghav 2014-04-09 06:35:23
Les Sessions

ne dépendent pas du fait que l'Utilisateur autorise un cookie. Ils fonctionnent plutôt comme un jeton permettant l'accès et la transmission d'informations tandis que l'utilisateur a leur navigateur ouvert. Le problème avec sessions est que lorsque vous fermez votre navigateur, vous perdez aussi la session. Donc, si vous aviez un site nécessitant une connexion, cela ne pourrait pas être enregistré comme une session comme un cookie, et l'utilisateur serait forcé de se reconnecter chaque fois qu'il visite.

0
répondu Shankar kumar 2011-05-27 10:12:08
  • la principale différence entre les cookies et les sessions est que les cookies sont stockés dans le navigateur de l'utilisateur, et les sessions ne le sont pas. Cette différence détermine ce pour quoi chacun est le mieux utilisé.

  • un cookie peut conserver des informations dans le navigateur de l'utilisateur jusqu'à leur suppression. Si une personne a un login et un mot de passe, cela peut être défini comme un cookie dans leur navigateur afin qu'ils n'aient pas à se reconnecter à votre site Web chaque fois qu'ils visitent. Vous pouvez stockez presque tout dans un cookie de navigateur.

0
répondu Shankar kumar 2012-11-21 05:20:35

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 - il n'a rien à voir avec ASP.Net sessions. 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 lorsque la session du navigateur expire. Pour créer un cookie de session - ne mettez pas de date d'expiration dessus. Faire ceci stocke le cookie dans la mémoire et est éliminé lorsque le navigateur est éliminé.

0
répondu Sean Mc 2015-01-26 22:27:21