Comment bien gérer les sessions et les cookies

a marqué ce sujet comme résolu.

Bonjour,

Je développe une petite API avec Express. Pour le moment tout fonctionne nickel. Je me pose la question cependant si je gère correctement les sessions et les cookies.

Ce que je voudrais, c’est lorsqu’un utilisateur se connecte, une session est crée et une demande de cookie est envoyée afin qu’il puisse faire des requêtes sur le serveurs. Première question, au bout de combien de temps je devrais supprimer la session ? Pour le moment j’ai mis 10 minutes.

Maintenant, imaginons que je propose l’option "Se souvenir de moi". Comment le gérer ? Augmenter la durée de la session à 1 mois si le cookie est présent ?

Quelles sont les bonnes pratiques pour les sessions et les cookies ? Je n’arrive pas à trouver un document clarifiant tout ça.

Merci pour votre aide et bonne journée !

Une session est la représentation du visiteur coté serveur. Un cookie est un élément que le visiteur transmet.

Un système de session est généralement basé sur un cookie qui permet au serveur de faire le lien entre le visiteur et les informations stockée coté serveur.

Une session est éphémère, se sont des informations qui sont stockée par ailleurs (base de données).

Une session ayant un timeout de 10 à 30 minute me semble raisonnable, pas plus.

Dans le cookie tu dois mettre des informations permettant d’identifier le visiteur. Quand tu reçois une requête soit une session existe et on la prend, soit elle n’existe pas et on en créée une nouvelle.

Dans le cas où l’on coche un case "se souvenir de moi" alors le cookie d’identification à une durée de vie plus longue.

+0 -0

Salut,

Le cookie de la session et celui dû à la case "se souvenir de moi" n’est pas du tout le même. ON n’y stocke pas les mêmes informations.

Le cookie de session n’est en principe qu’un simple numéro, souvent un hash aléatoire basique. L’utilisateur est déjà identifié, et c’est le serveur qui fait le travail de vérification de validité: expiration de la session, adresse IP et identité du navigateur qui n’ont pas changé entre deux requêtes, etc. Par contre on ne vérifie en général pas que l’utilisateur existe toujours, qu’il a bien le droit de se connecter, les droits qu’il a sur telle ou telle partie du site, etc. à chaque requête; déjà parce que ça peut être lourd pour le serveur de le faire à chaque requête, et aussi parce qu’à court terme le simple fait de vérifier l’IP et l’identité du navigateur sont suffisants pour éviter la plupart des risques.

Il en est tout autrement à long terme avec le cookie "se souvenir de moi". En réalité c’est pratiquement une réidentification. Comme à une réidentification normale, on doit revérifier si l’utilisateur existe toujours et ses droits avant d’aller plus loin et de de réassocier son cookie de session. Ainsi, il va falloir stocker le login de l’utilisateur dans le cookie et une clé quelconque, une clé qui permette de le retrouver tout en étant suffisament sécurisée. Attention toutefois, ne pas utiliser le mot de passe ou son hash comme clé ! Rappelons que les cookies peuvent être lus et modifiés. ON ne peut pas non plus utiliser l’IP et l’user-agent, car ils sont suceptibles de changer (la plupart des gens n’ont pas une IP fixe et les IP changent souvent sur les réseaux mobiles, et oui, l’user-agent peut changer pour plusieurs raisons comme la mise à jour du navigateur ou de l’OS, l’installation/désinstallation d’extensions…)

En plus, une fois que le cookie "se souvenir demoi" a servi pour se réidentifier, il devrait être supprimé, invalidé par le serveur, et un nouveau devrait être créé pour la prochaine fois. Le but ici, c’est d’éviter qu’on puisse voler le cookie (car on a tout le temps de le faire), et qu’il suffit de ce cookie pour que la Terre entière puisse se connecter sans condition sur le compte de la victime.

En bonus, beaucoup de sites ne considèrent pas l’identification par un "se souvenir demoi" exactement identique à une véritable identification. Ils redemandent si nécessaire une véritable réidentification par formulaire ou site tiers lors d’opérations potentiellement sensibles comme la validation d’une commande, le changement de mot de passe, d’adresse, d’informations de paiement, etc. En clair ça consiste à redemander le mot de passe.

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte