Est-il possible de désactiver jsessionid dans la servlet tomcat?

Est-il possible de désactiver jsessionid dans l’URL de tomcat? le jsessionid ne semble pas trop moteur de recherche convivial.

Vous pouvez désactiver uniquement les moteurs de recherche utilisant ce filtre, mais je vous conseille de l’ utiliser pour toutes les réponses car c’est pire que le simple moteur de recherche. Il expose l’ID de session qui peut être utilisé pour certaines exploits de sécurité ( plus d’informations ).

Tomcat 6 (avant 6.0.30)

Vous pouvez utiliser le filtre de réécriture tuckey .

Exemple de configuration pour le filtre Tuckey:

 Ssortingp URL Session ID's ^(.*?)(?:\;jsessionid=[^\?#]*)?(\?[^#]*)?(#.*)?$ $1$2$3  

Tomcat 6 (6.0.30 et suivants)

Vous pouvez utiliser disableURLRewriting dans la configuration du contexte pour désactiver ce comportement.

Tomcat 7 et Tomcat 8

A partir de Tomcat 7, vous pouvez append les éléments suivants dans la configuration de session.

  COOKIE  
   COOKIE  

Tomcat 7 et Tomcat 8 prennent en charge la configuration ci-dessus dans votre web-app web.xml, qui désactive les sessions basées sur des URL.

Il est possible de le faire dans Tomcat 6.0 avec: disableURLRewriting

http://tomcat.apache.org/tomcat-6.0-doc/config/context.html

par exemple

    

Dans Tomcat 7.0, ceci est contrôlé avec les éléments suivants dans une application: ServletContext.setSessionTrackingModes ()

Tomcat 7.0 suit les spécifications Servlet 3.0.

Utilisez un Filter sur toutes les URL qui encapsule la response dans un HttpServletResponseWrapper qui renvoie simplement l’URL inchangée depuis encodeRedirectUrl , encodeRedirectURL , encodeUrl et encodeURL .

Citation de la réponse de Pool:

Vous pouvez utiliser le filtre de réécriture tuckey.

Vous pouvez désactiver uniquement les moteurs de recherche utilisant ce filtre, mais je vous conseille de l’utiliser pour toutes les réponses car c’est pire que le simple moteur de recherche. Il expose l’ID de session qui peut être utilisé pour certaines exploits de sécurité (plus d’informations).

Il convient de mentionner que cela permettra toujours la gestion de session basée sur les cookies même si le jsessionid n’est plus visible. (extrait de son autre post: Puis-je désactiver la session HttpSession dans web.xml? )

PS Je n’ai pas assez de réputation pour commenter, sinon j’aurais ajouté ceci à son message ci-dessus en tant que commentaire.

Dans Tomcat 6.0, vous pouvez utiliser disableURLRewriting = “true” dans context.xml à partir du chemin / config de votre installation tomcat.

http://tomcat.apache.org/tomcat-6.0-doc/config/context.html

fichier context.xml

      WEB-INF/web.xml      

Maintenant, la sortie de tomcat est conviviale pour les moteurs de recherche …

Prendre plaisir

De plus, si vous avez Apache devant Tomcat, vous pouvez supprimer la session avec un filtre mod_rewrite.

Ajoutez ce qui suit à votre configuration apache.

 #Fix up tomcat jsession appending rule issue RewriteRule ^/(.*);jsessionid=(.*) /$1 [R=301,L] 

Cela fera une redirection 301 vers une page sans le jsessionid. Evidemment, cela désactivera complètement les URL de session mais c’est ce dont j’avais besoin.

Cheers, Mark

Par défaut, les cookies sont activés sur le serveur Tomcat (vous pouvez le définir explicitement à l’aide de cookies = true dans l’élément server.xml). L’activation des cookies signifie que jsessionID ne sera pas ajouté aux URL, car la session sera gérée à l’aide de cookies. Cependant, même après l’activation des cookies, les identifiants jsessionID sont ajoutés à l’URL pour la première demande car le serveur Web ne sait pas à ce stade si les cookies ont été activés. Pour supprimer ces identifiants jsessionID, vous pouvez utiliser les règles de réécriture de tuckey:

Vous pouvez trouver plus d’informations à ce sujet sur http://javatechworld.blogspot.com/2011/01/how-to-remove-jsessionid-from-url-java.html

  Remove jsessionid from embedded urls - for urls WITH query parameters ^/(.*);jsessionid=.*[?](.*)$ /$1?$2   Remove jsessionid from embedded urls - for urls WITHOUT query parameters ^/(.*);jsessionid=.*[^?]$ /$1  

Vous pouvez trouver plus d’informations à ce sujet sur http://javatechworld.blogspot.com/2011/01/how-to-remove-jsessionid-from-url-java.html