Question:
Pourquoi la transmission de l'ID de session en tant que paramètre d'URL n'est-elle pas sécurisée?
Jonathan Egerton
2012-04-23 23:37:22 UTC
view on stackexchange narkive permalink

J'ai récemment suivi une discussion, au cours de laquelle une personne déclarait que la transmission de l'identifiant de session en tant que paramètre d'url n'était pas sécurisée et que les cookies devraient être utilisés à la place. L'autre personne a dit le contraire et a fait valoir que Paypal, par exemple, transmet l'identifiant de session en tant que paramètre d'url pour des raisons de sécurité.

La transmission de l'identifiant de session en tant que paramètre d'URL n'est-elle vraiment pas sécurisée? Pourquoi les cookies sont-ils plus sécurisés? Quelles sont les possibilités d'un attaquant pour les deux options (cookies et paramètre d'URL)?

Cinq réponses:
Charles
2012-04-24 00:03:30 UTC
view on stackexchange narkive permalink

La transmission de l'identifiant de session en tant que paramètre d'URL n'est-elle vraiment pas sécurisée?

Bien que ce ne soit pas intrinsèquement non sécurisé, cela peut poser problème à moins que le code ne soit très bien conçu.

Disons que je visite mon forum préféré. Il me connecte et ajoute mon identifiant de session à l'URL dans chaque demande. Je trouve un sujet particulièrement intéressant, et copie & collez l'URL dans un message instantané à mon ami.

À moins que l'application n'ait pris des mesures pour s'assurer qu'il existe une forme de validation sur l'identifiant de session, l'ami qui a cliqué sur ce lien peut hériter de ma session, et pourra alors faire tout ce que je peux faire, comme moi.

En stockant des identifiants de session dans des cookies , vous éliminez complètement le problème de partage de lien.

Il existe une variante de ce thème appelée fixation de session, qui implique un partage intentionnel d'un identifiant de session pour à des fins malveillantes. L'article Wikipédia lié explique en détail comment cette attaque fonctionne et en quoi elle diffère du partage involontaire de l'identifiant de session.

Pourquoi les cookies sont-ils plus sécurisés?

Les cookies peuvent être plus sûrs ici, car ils ne sont pas quelque chose que les utilisateurs normaux peuvent copier coller &, ou même afficher et modifier. C'est une valeur par défaut beaucoup plus sûre.

Quelles sont les possibilités d'un attaquant pour les deux options?

Aucune de ces méthodes est à l'abri des attaques de type «man-in-the-middle» via une communication non chiffrée. Les addons de navigateur, les logiciels espions et autres méchants côté client peuvent également espionner les deux méthodes de stockage des identifiants de session.

Dans les deux cas, la validation côté serveur que le client qui prétend posséder un ID de session est une bonne pratique. Le contenu de cette validation est sujet à débat. Gardez à l'esprit que les utilisateurs derrière des proxys d'entreprise peuvent sauter entre les adresses IP entre les demandes, de sorte que le verrouillage d'une session sur une adresse IP peut accidentellement aliéner des personnes. L'article sur la fixation de session mentionne quelques autres alternatives utiles.

Notez également que les cookies sont stockés sur le disque dur, laissant beaucoup plus de traces.
@ewanm89 et les URL sont stockés dans l'historique du navigateur (et les signets)
Et bien sûr, cela n'est pas vrai non plus si votre navigateur est configuré pour ne pas enregistrer l'historique / les cookies ou s'il fonctionne en mode de confidentialité. Cependant, cela * n'empêchera * pas les attaques MitM sur des canaux non chiffrés et ne constitue qu'un obstacle mineur aux logiciels espions ou logiciels malveillants attachés au navigateur contre l'espionnage de toute façon.
-1 vous n'avez fait aucune mention de fixation de session.
@ratchetfreak dépend d'autres paramètres, peut-être, peut-être pas, un cookie atterrit toujours sur le disque pendant au moins la session.
@Rook, Je préfère les commentaires constructifs aux votes négatifs. J'ai ajouté une référence aux attaques de fixation de session.
Ok, je ne suis généralement pas d'accord avec ce post. Qui se soucie des utilisateurs réguliers de le modifier. Il y a de vraies attaques exposées en passant le cookie avec GET, personne ne devrait utiliser cette méthode, ce message est juste trompeur.
Vous êtes plus que bienvenu pour fournir votre propre réponse, si vous trouvez que la mienne fait défaut. Je parle d'une vaste expérience dans le monde réel, et pas seulement d'un point de vue purement axé sur la sécurité. Lors de la prise en charge d'applications conçues avant que les développeurs ne comprennent les implications de telles choses, le passage d'identifiant de session * accidentel * était une chose beaucoup plus visible et beaucoup plus gênante que le vecteur d'attaque réel qu'il présente. Maintenant qu'il est bien compris comme un vecteur d'attaque, des mesures * doivent * être prises pour l'atténuer.
Ce ne sont pas seulement les utilisateurs derrière les proxies d'entreprise qui changent les adresses IP.Un scénario plus courant de nos jours est que les utilisateurs mobiles changent de réseau wifi ou basculent entre les données cellulaires et le wifi.
martinstoeckli
2012-04-24 00:50:17 UTC
view on stackexchange narkive permalink

La plupart des sites Web stockent l'état de connexion de leur utilisateur dans la session, et si un attaquant a l'ID de session, il a également les privilèges de l'utilisateur connecté. En d'autres termes, les deux soucis de maintien de la session et d'authentification sont souvent associés.

Un problème est qu'il est facile de faire des attaques de fixation de session. Dans ce cas, un attaquant enverrait une URL préparée avec un identifiant de session connu à l'utilisateur. Si l'utilisateur clique sur cette URL et se connecte, l'attaquant aura une session avec des privilèges. Si le site Web nécessite un cookie, alors une URL préparée dans un e-mail ne sera pas suffisante.

Si un site utilise HTTP mélangé avec HTTPS, l'ID sera transmis en texte brut dans l'URL pour toutes les requêtes HTTP (même pour une demande d'image). Donc, si l'attaquant peut lire une seule requête HTTP après que l'utilisateur s'est connecté, il connaît l'identifiant de la session.

Un moyen de sortir du problème serait de séparer les deux problèmes, maintenir la session et l'authentification. Vous pouvez alors laisser l'identifiant de session sans protection, uniquement pour maintenir la session, et utiliser un cookie séparé pour vérifier l'état de connexion. Ce cookie doit être configuré pour être envoyé uniquement aux pages HTTPS.

bobince
2012-04-24 18:33:13 UTC
view on stackexchange narkive permalink

En plus de ce que Charles et Martin ont dit, mettre quoi que ce soit dans l'URL augmente le risque de fuite. Cela peut se faire via un en-tête Referer dans une ressource liée, de l'accès au point de terminaison avec des enregistrements d'historique du navigateur, de la détection de l'historique de force brute, des journaux Web protégés de manière inappropriée, etc. Il est donc généralement déconseillé de mettre tout ce que vous voulez garder secret dans une chaîne URL / requête.

Je n'ai pas vu PayPal utiliser des identifiants de session serveur dans les URL. Il n'y a aucun moyen que ce soit vraiment plus sûr que les cookies; la raison pour laquelle cela était généralement fait dans le passé était de prendre en charge les navigateurs sans cookies activés. C'est de moins en moins une préoccupation de nos jours, et les problèmes d'utilisabilité de ne pas être de partager des liens, en plus des attaques de fixation de session, signifient que la session dans l'URL est généralement évitée aujourd'hui.

"de l'histoire de la force brute reniflant _" comment?
Le plus important vieux CSS: le reniflement de l'historique des liens visités. Il y a eu d'autres problèmes de fuite d'historique (par exemple, des attaques de synchronisation) mais ils sont beaucoup plus difficiles à réaliser.
Niels Basjes
2012-04-30 23:58:51 UTC
view on stackexchange narkive permalink

Quelque chose que j'ai vu il y a quelques années, c'est que quelqu'un a copié une URL (AVEC sessionid) dans Twitter. Tous les abonnés avaient alors un accès complet à ce compte de personnes sur ce site.

Donc oui, mettre un sessionID dans l'URL est une mauvaise idée.

LongTime
2018-03-15 07:52:12 UTC
view on stackexchange narkive permalink

L'ID de session ajoute à la sécurité lorsque des cookies sont déjà utilisés. Imaginez s'il existe un lien qui transfère de l'argent de votre banque:

https://mybank.com/transferMoney?sum=10000&destAccount=someAccount

Si vous comptez uniquement sur les cookies, ce lien peut vous être fourni dans un e-mail frauduleux. Lorsque vous l'ouvrez et cliquez sur ce lien, puisque vous avez un cookie dans votre navigateur, il sera réellement fonctionnel. Vous allez réussir (et involontairement) à transférer de l'argent de votre compte vers celui de quelqu'un d'autre.

Si le lien était:

https://mybank.com/transferMoney?sum = 10000&destAccount = someAccount&sessionId = jow8082345hnfn9234

alors un fraudeur malveillant n'a pas pu vous envoyer l'e-mail comme celui ci-dessus car il est presque impossible de deviner votre ID de session actuel.

La question est * pourquoi est-il insécurisé *?.Vous semblez répondre * pourquoi est-ce sécurisé *?


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...