Dans l'API Java Servlet, que fait-on pour s'assurer que l'identifiant de session de quelqu'un n'est pas volé? Par exemple, si j'avais une session active et quelqu'un d'une manière ou d'une autre, j'aurais pu utiliser mon identifiant de session, pourrait-il l'utiliser?Qu'est-ce qui empêche le vol de l'identifiant de HttpSession?
Répondre
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:
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é.
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.
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? –
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. –
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.
- 1. Javascript qui empêche XSS
- 2. classe de fabrique qui empêche l'instanciation directe
- 3. Empêcher le vol de données
- 4. Mesure de la taille de l'objet HttpSession
- 5. Qu'est-ce qui empêche l'invocation de JavaScript de ma page?
- 6. Questions sur DisplayTag à propos de HttpSession
- 7. Le thread HttpSession est-il sécurisé?
- 8. Portlet, Spring, couche de service injection HttpSession
- 9. Empêche le push des validations qui s'ajoutent aux branches fermées
- 10. Qu'est-ce qui empêche Firefox de rendre une page?
- 11. Empêche Java Applet de gagner le focus
- 12. NSDrawer empêche le redimensionnement
- 13. Swing: Empêche CellEditor de perdre le focus
- 14. devIL empêche le programme de démarrer correctement
- 15. ID de session HttpSession différent de l'ID FlexSession
- 16. Obtenir des informations de vol
- 17. Accéder aux informations de vol
- 18. Problème de vol stationnaire CSS IE avec le menu déroulant
- 19. Le regroupement empêche la virtualisation?
- 20. Flex HDividedBox empêche le glissement
- 21. Drapeaux avec bordure sur le vol stationnaire
- 22. dijit.Tooltip --- comment désactiver le vol stationnaire?
- 23. Qu'est-ce qui empêche la collecte d'un thread dans C#?
- 24. La mise en œuvre d'une génération de clé HttpSession
- 25. Un outil Firefox qui montre la structure de l'objet et de l'élément en vol stationnaire?
- 26. Expression régulière qui empêche certains caractères et les caractères répétés
- 27. fenêtre pop-up sur le vol stationnaire
- 28. Comment arrêter le vol d'images d'auteur?
- 29. Border sur le vol stationnaire, Bouton, WPF
- 30. Pages Xhtml et test HttpSession, pas de jstl?
+1 pour la session-config du servlet 3.0 – Bozho