2010-11-10 6 views

Répondre

12

Rien ne l'empêche. Vous obtenez l'identifiant de session, vous pouvez participer à la session.

Dans le cas habituel des cookies, ceci n'est pas un risque en soi. L'attaquant ne devrait pas être en mesure de lire un cookie de session utilisateur, à moins:

  1. ils ont l'homme en la moyenne capacité, dans ce cas, vous avez des problèmes bien pires que seulement les ID de session; Vous avez laissé un trou de script inter-site, auquel cas vous avez des problèmes beaucoup plus graves que les ID de session; Vous êtes vulnérable aux attaques DNS-relinding/cross-domain-cooking, auquel cas vous devez le corriger en autorisant uniquement les requêtes Host: connues de bonne qualité.

(Alors que vous pouvez essayer des sessions nouage à des adresses IP, cela risque de rupture des sessions valides par exemple suite à des procurations à la ronde. IP peuvent être utilisés dans le cadre d'une stratégie plus large pour détecter toute activité suspecte, mais sur le public internet ce n'est pas une bonne idée de toujours exiger que chaque requête d'une session provienne de la même IP.)

Malheureusement dans Servlet il existe un autre cas, à part les cookies: jsessionid= paramètres. Depuis ils apparaissent dans l'URL elle-même, ce qui les rend beaucoup plus perméable (par exemple via les référents et les liens collés). Et c'est loin d'être le seul problème pratique avec les identifiants de session de paramètres. Ils gâchent la navigation et détruisent le SEO.

À mon avis jsessionid= Les URL sont l'une des pires erreurs de Servlet, une stratégie discrète de repli des cookies d'antan qui ne devrait pas être utilisée pour quoi que ce soit. Mais certainement, ils ne devraient pas être autorisés à accorder l'accès à des données privilégiées; pensez à utiliser l'authentification HTTP de base à la place si vous avez besoin d'un mécanisme de secours pour les navigateurs qui ne prennent pas en charge les cookies.

Dans Servlet 3.0, vous pouvez facilement désactiver les URL jsessionid= en utilisant <session-config> dans le web.xml; Malheureusement, dans les versions précédentes, vous êtes laissé à déblayer avec des filtres si vous voulez désactiver correctement la fonctionnalité.

+0

+1 pour la session-config du servlet 3.0 – Bozho

8

Oui, ils pourraient l'utiliser. Rien n'est fait pour le protéger à moins de mettre tout votre trafic sur SSL.

Voici comment fonctionne Firesheep, qui a récemment attiré beaucoup d'attention pour faciliter le vol de session.

+0

Le transfert de toutes les données via HTTPS est-il vraiment la seule solution? N'existe-t-il pas de cadres ou de solutions de contournement connues? Et même si toutes les données sont transférées sur HTTPS, quelqu'un pourrait-il écrire un programme pour tenter de deviner un identifiant de session? –

+3

Oui, toutes les informations que vous envoyez à l'utilisateur pour qu'elles puissent les renvoyer peuvent être interceptées. Le chiffrement est donc le seul moyen de les arrêter. En ce qui concerne les devinettes, les identifiants de session sont généralement conçus pour être assez difficiles à deviner que cela n'est pas pratique. –

0

Oui, l'ID de session permet à un utilisateur d'accéder à la session correspondante.

Vous pouvez stocker l'adresse IP utilisée lors de la connexion dans la session et lorsque les modifications IP nécessitent que l'utilisateur se reconnecte. De plus (vous ne savez pas si c'est fait automatiquement), vous pouvez faire la même chose pour l'agent utilisateur - sans toutefois augmenter la sécurité contre les attaques malveillantes, juste contre les utilisateurs stupides qui abandonnent accidentellement leur session si elle est transmise via GET et non un cookie.

Questions connexes