Pourquoi les sites Web populaires stockent-ils des données très compliquées liées aux sessions dans les cookies - et qu'est-ce que cela signifie?

19

En tant que développeurs Web, nous apprenons tous que les sessions aident à surmonter les problèmes liés à la nature sans état de HTTP. Nous créons un identifiant de session unique et l'envoyons au navigateur - et lorsque le navigateur nous renvoie le même identifiant, nous identifions facilement l'utilisateur.

Tout cela semble assez simple et PAS si compliqué à mettre en œuvre dans n'importe quelle langue.

MAINTENANT

Regardez les captures d'écran suivantes que j'ai prises. Ceux-ci montrent les types de cookies que les sites Web populaires stockent. Il semble qu'ils stockent plusieurs ID de session, ou ils essaient de masquer l'ID réel en définissant autant de cookies, ou, c'est quelque chose de très spécialisé qu'ils prennent pour empêcher le piratage de session et d'autres problèmes connexes. Ou peu importe.

Gmail (avant la connexion)

entrez la description de l'image ici

Gmail (après connexion)

entrez la description de l'image ici

Facebook

entrez la description de l'image ici

StackExchange

entrez la description de l'image ici

(Ne vous inquiétez pas, vous ne pouvez pas voler ma session - elle est périmée et incomplète :))

Alors, ma question est - à quoi sert cette complexité? Veuillez expliquer ce que ces différents cookies signifient (en général) et à quelles fins ils sont définis. Enfin, indiquez comment je peux le faire (et si je dois le faire) dans mes propres applications.

Une autre question: dans de nombreux cas, les valeurs des cookies semblent être encodées en URL - pourquoi?

treecoder
la source

Réponses:

21
  1. Parfois, il n'est pas pratique de stocker certaines données dans une table de session sur la base de données. Si certaines données est mise à jour a beaucoup alors il pourrait enliser la base de données beaucoup aussi. Si tel est le cas et que les données ne sont pas trop importantes, il est préférable de les stocker dans un cookie distinct.

  2. Lorsque (1) se produit, vous devez gérer la limite de 4 Ko par cookie, donc stocker toutes les données de session dans le cookie dans un cookie est une mauvaise idée.

  3. Ce serait bien de pouvoir tout stocker dans le nombre minimum de cookies requis, mais les problèmes de complexité du projet rendent cela difficile. Certaines applications sont développées par plusieurs équipes . Parfois, ce que vous voyez comme un serveur Web est en fait un proxy qui parle à plusieurs clusters de serveurs Web différents, acheminant différentes sections du site vers différents clusters, chacun avec son propre ensemble de cookies.

  4. Les cookies sont bon marché. Vous êtes l'exception à la règle - personne ne regarde dans sa boutique de cookies pour voir combien de cookies ils ont. Et il y a peu d'avantages en termes de performances à essayer de combiner toutes les données de session côté client en aussi peu de cookies que possible.

Michael Slade
la source
Je suis également l'exception à la règle.
Michael Slade