web-dev-qa-db-fra.com

Quels sont les risques de simplement effacer les cookies au lieu de vous déconnecter?

Un flux de travail d'authentification Web typique ressemble à ceci:

  1. L'utilisateur fournit ses informations d'identification.
  2. Le serveur valide les informations d'identification.
  3. Si les informations d'identification sont valides
    • Le serveur génère un jeton.
    • Le serveur conserve ce jeton.
    • Le serveur répond à la connexion avec ce jeton.
  4. Le navigateur stocke le jeton.
  5. Le navigateur fait des demandes avec un jeton.
  6. Le serveur valide le jeton et répond en conséquence.

Normalement, ce jeton est stocké dans un cookie. La présence et la validité du jeton dans une demande permettent au serveur de savoir si le client qui fait la demande est authentifié. Pas de jeton, pas d'entrée, ce qui revient à ne pas être connecté. Donc ...

  • Puis-je simplement me déconnecter en effaçant les cookies au lieu d'appuyer sur la déconnexion?
  • Quels sont les problèmes de simplement effacer les cookies par rapport au fait de cliquer sur le bouton de déconnexion?
61
Joseph

Puis-je simplement me déconnecter en effaçant les cookies au lieu d'appuyer sur la déconnexion?

Souvent oui, pour les raisons que vous avez fournies dans votre question: sans le jeton de session dans vos cookies, une application Web typique ne saura pas qui vous êtes.

Quels sont les problèmes de simplement effacer les cookies par rapport au fait de cliquer sur le bouton de déconnexion?

Les applications Web qui gèrent l'authentification en suivant les directives de gestion de session OWASP invalideront la session côté serveur lorsque vous vous déconnectez explicitement. Si vous jetez simplement le cookie avec le jeton de session, la session peut être sujette à un détournement de session.

Utiliser les serrures de porte comme analogie pour ceux qui ne connaissent pas les meilleures pratiques de développement d'applications Web (grâce à la discussion dans les commentaires):

Votre compte peut être vu comme une pièce dans un immeuble. Lorsque vous vous connectez, le propriétaire de l'immeuble crée une porte et y met un verrou automatique, afin que vous seul puissiez y entrer. Votre jeton de session est votre clé et est généralement stocké dans les cookies de votre navigateur, mais peut être stocké ailleurs.

Jeter votre jeton en supprimant vos cookies, vider le cache, etc., détruit simplement votre copie de la clé.

La déconnexion explicite consiste à demander au propriétaire de l'immeuble de cloisonner la porte. Rien ne garantit qu'ils sécuriseront votre compte, mais en tant qu'utilisateur, vous exprimez explicitement vos souhaits.

Il existe plusieurs façons dont un attaquant peut obtenir une copie de votre clé, connue sous le nom de détournement de session, qu'il incombe au propriétaire du site d'atténuer, et non aux utilisateurs.

Tout d'abord, l'attaquant peut juste deviner. Si le site génère des clés de session séquentiellement, ou utilise une méthode de génération pseudo-aléatoire à faible entropie, cela facilite beaucoup les devinettes. Les sites atténuent cela en utilisant des jetons à entropie élevée et un recyclage périodique des sessions. Les sessions de recyclage n'empêchent pas l'accès, mais il est évident lorsqu'un accès non autorisé a été accordé.

Deuxièmement, l'attaquant peut utiliser la fixation de session: il vous donne une clé avant de vous connecter, que vous continuez à utiliser après vous être connecté. Les sites atténuent cela en recyclant explicitement la session lorsque vous vous connectez.

Troisièmement, une attaque d'homme au milieu. L'attaquant peut voir directement votre clé. TLS atténue cela. Il est possible de décrypter le trafic TLS par le biais d'attaques de rétrogradation, d'implémentations non sécurisées et d'attaques zero-day, mais celles-ci sont bien en dehors du domaine d'un utilisateur, rares et les attaques zero-day contre TLS ont tendance à faire BEAUCOUP de bruit lorsqu'elles sont découvertes (Heartbleed, et al).

En tant qu'utilisateur, vos responsabilités sont de vous déconnecter et de tenir le site responsable lorsqu'il prend des raccourcis avec sécurité, tout comme votre responsabilité avec votre voiture dans un parking public est de verrouiller vos portes. Si les serrures de porte sont court-circuitées, c'est la faute du fabricant, pas la vôtre.

80
Ghedipunk

Certains sites Web utilisent des méthodes de stockage de données non basées sur les cookies, telles que le stockage local HTML5 et le cache du lecteur flash, qui peuvent contenir des informations sensibles.

Par exemple, votre client de messagerie peut stocker votre brouillon de courrier électronique dans le stockage local afin que si vous actualisez accidentellement la page/fermez le navigateur, vous pourrez reprendre là où vous vous étiez arrêté. Ces données sensibles seront normalement supprimées lorsque vous cliquez sur le bouton de déconnexion sur un site Web bien conçu et ne seront pas supprimées en supprimant simplement vos cookies.

11
Mohammad Ali

Puis-je simplement me déconnecter en effaçant les cookies au lieu d'appuyer sur la déconnexion?

Oui, puisque l'application Web utilise des cookies pour vous identifier de manière unique, la suppression des cookies vous déconnectera.

Quels sont les problèmes de simplement effacer les cookies par rapport au fait de cliquer sur le bouton de déconnexion?

Le bouton de déconnexion a une fonction particulière en ce qu'il envoie une demande de suppression de la session et renvoie également une réponse pour supprimer le cookie dans votre navigateur. Si vous n'envoyez pas de demande de suppression de la session, la session reste active côté serveur. Les sessions ont une durée de vie maximale et seront éventuellement supprimées par le garbage collector.

3
Vipul Nair

Il n'y a aucun risque.

Quelqu'un a fait remarquer que cela pourrait augmenter le risque de détournement de session. Mais ce n'est pas vrai. Si l'application a une session (avec état), cette session a un délai d'expiration. Et après expiration de la session, il n'y a rien à détourner. Si la session est active, les chances de détourner une session d'un utilisateur actif sont presque les mêmes que pour une session "orpheline". En tenant compte des outils qui détectent rapidement plusieurs requêtes avec des ID de session invalides de quelqu'un qui essaie de forcer l'ID de session, il n'y a pas de risque supplémentaire côté serveur.

Côté client il peut y avoir plus de risques en cas de déconnexion qu'en cas de suppression des cookies. La déconnexion invalide la session, mais peut conserver d'autres données sensibles. Par exemple, lorsque vous vous déconnectez de Google Mail, votre nom d'utilisateur est toujours conservé dans les cookies; et lorsque vous accédez à Google Mail, vous verrez votre nom d'utilisateur prérempli. Tout d'abord, il se peut que vous ne vouliez pas que quelqu'un derrière votre épaule voie cet identifiant. Deuxièmement, si vous êtes pressé, vous pouvez vous connecter à un mauvais compte (de vos multiples comptes). Des problèmes similaires peuvent se produire dans d'autres applications. Où comme lorsque vous supprimez les cookies, vous êtes sûr qu'il n'y a rien dans votre navigateur dont vous n'êtes pas au courant; vous ne serez pas surpris par les données stockées dans les cookies. En fait, en cas de déconnexion, le risque de surprises négatives est plus élevé qu'en cas de suppression des cookies. Je dois dire que lorsque l'on supprime des cookies, il faut également envisager de supprimer le stockage local.

Un seul inconvénient que je constate en cas de suppression de cookies est que le serveur utilisera un peu plus de ressources pour conserver les données de session jusqu'à la fin de la session. Mais la question dans OP concerne les risques pour le client. Il n'y a donc aucun risque. Et de nos jours, la plupart des applications n'ont aucun état sur le serveur; la déconnexion signifie dans ce cas simplement invalider le jeton; il n'y a souvent pas de ressources bloquées par session. Ainsi, même une session "orpheline" ne nécessite aucune ressource supplémentaire.

Un autre aspect à considérer: en fonction de l'application et de la connexion Internet, la déconnexion peut prendre un temps considérable, quelques secondes. Où supprimer les cookies (et le stockage local) se produit immédiatement et ne dépend pas du serveur et de la connexion Internet.

Peut-être que quelqu'un trouvera d'autres points importants que j'ai négligés et critiquera mon point de vue. C'est très bien. Je voulais simplement encourager les utilisateurs à ne pas suivre aveuglément les règles, mais à réfléchir à ce qui se passe réellement.

0
mentallurg