Czy jest możliwe wyłączenie jsessionid w serwlecie tomcat?

Czy można wyłączyć jsessionid w adresie URL w tomcat? jsessionid nie wydaje się zbyt przyjazny dla wyszukiwarek.

Author: Mark, 2009-06-08

8 answers

Możesz wyłączyć tylko dla wyszukiwarek za pomocą tego filtra, ale radzę używać go dla wszystkich odpowiedzi , ponieważ jest to gorsze niż tylko nieprzyjazne Wyszukiwarki. Wyświetla identyfikator sesji, który może być używany do pewnych exploitów bezpieczeństwa (więcej informacji).

Tomcat 6 (pre 6.0.30)

Możesz użyć tuckey rewrite filter .

Przykład konfiguracji dla filtra Tuckey:

<outbound-rule encodefirst="true">
  <name>Strip URL Session ID's</name>
  <from>^(.*?)(?:\;jsessionid=[^\?#]*)?(\?[^#]*)?(#.*)?$</from>
  <to>$1$2$3</to>
</outbound-rule>

Tomcat 6 (6.0.30 i nowsze)

TY można użyć disableURLRewriting w konfiguracji kontekstowej, aby wyłączyć to zachowanie.

Tomcat 7 i Tomcat 8

Od Tomcat 7 dalej możesz dodać następujące elementy w konfiguracji sesji.

<session-config>
    <tracking-mode>COOKIE</tracking-mode>
</session-config>
 64
Author: Pool,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-18 09:42:26
 <session-config>
     <tracking-mode>COOKIE</tracking-mode>
 </session-config> 

Tomcat 7 i Tomcat 8 obsługują powyższą konfigurację w sieci Web-App.xml, który wyłącza sesje oparte na adresach URL.

 51
Author: Spektr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-18 09:44:01

Jest to możliwe w Tomcat 6.0 z: disableURLRewriting

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

Np.

<?xml version='1.0' encoding='utf-8'?>
<Context docBase="PATH_TO_WEBAPP" path="/CONTEXT" disableURLRewriting="true">
</Context>

W Tomcat 7.0, jest to kontrolowane za pomocą następujących w aplikacji: ServletContext.setSessionTrackingModes ()

Tomcat 7.0 jest zgodny ze specyfikacją Servlet 3.0.
 19
Author: Doug,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-11 16:58:27

Użyj Filter na wszystkich adresach URL, które zawijają response w HttpServletResponseWrapper, które po prostu zwraca adres URL niezmieniony od encodeRedirectUrl, encodeRedirectURL, encodeUrl i encodeURL.

 13
Author: Andrew Duffy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-07 20:57:53

Cytat z odpowiedzi:

Możesz użyć filtra Tuckey rewrite.

Możesz wyłączyć tylko Wyszukiwanie silników za pomocą tego filtra, ale ja bym doradzić użycie go dla wszystkich odpowiedzi jako to gorsze niż tylko wyszukiwarka nieprzyjazny. Wyświetla identyfikator sesji które mogą być używane dla pewnego bezpieczeństwa exploity (więcej informacji).

Warto wspomnieć, że nadal będzie to umożliwiać obsługę sesji opartych na plikach cookie, nawet jeśli identyfikator jsessionid nie jest widoczny już nie. (zaczerpnięte z jego innego postu: Czy Mogę wyłączyć HttpSession w sieci.xml?)

PS. Nie mam wystarczającej reputacji, aby skomentować, w przeciwnym razie dodałbym to do jego postu powyżej jako komentarz.

 5
Author: Andreas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:51

W Tomcat 6.0 można użyć disableURLRewriting= "true"w kontekście.xml z Twojej / config ścieżki instalacji tomcat.

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

Kontekst.plik xml

<?xml version='1.0' encoding='utf-8'?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<!-- The contents of this file will be loaded for each web application -->
<Context disableURLRewriting="true">

    <!-- Default set of monitored resources -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>

    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->

    <!-- Uncomment this to enable Comet connection tacking (provides events
         on session expiration as well as webapp lifecycle) -->
    <!--
    <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
    -->

</Context>

...

Teraz wyjście tomcat jest przyjazne dla wyszukiwarek...

Enjoy

 4
Author: myset,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-25 17:25:36

Również jeśli masz Apache przed Tomcatem, możesz usunąć jsession za pomocą filtra mod_rewrite.

Dodaj następujące elementy do konfiguracji apache.

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

Spowoduje to przekierowanie 301 na stronę bez identyfikatora jsessionid. Oczywiście to całkowicie wyłączy url jsessionid, ale to jest to, czego potrzebowałem.

Pozdrawiam, Mark
 2
Author: Mark Lynch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-21 04:30:06

Domyślnie pliki cookie są włączone w serwerze Tomcat (można je jawnie ustawić za pomocą cookies = true w elemencie serwera.xml). Włączenie plików cookie oznacza, że jsessionID nie będzie dołączany do adresu URL, ponieważ sesja będzie zarządzana za pomocą Plików cookie. Jednak nawet po włączeniu plików cookie, jsessionID są dołączane do adresu URL dla pierwszego żądania, ponieważ serwer WWW nie wie na tym etapie, czy pliki cookie zostały włączone. Aby usunąć takie identyfikatory jsessionid, możesz użyć reguł Tuckey rewrite:

Możesz więcej informacji na ten temat można znaleźć na stronie http://javatechworld.blogspot.com/2011/01/how-to-remove-jsessionid-from-url-java.html

<outbound-rule encodefirst="true">
    <note>Remove jsessionid from embedded urls - for urls WITH query parameters</note>
    <from>^/(.*);jsessionid=.*[?](.*)$</from>
    <to encode="false">/$1?$2</to>
</outbound-rule>

<outbound-rule encodefirst="true">
    <note>Remove jsessionid from embedded urls - for urls WITHOUT query parameters</note>
    <from>^/(.*);jsessionid=.*[^?]$</from>
    <to encode="false">/$1</to>
</outbound-rule>
Więcej informacji na ten temat można znaleźć na stronie http://javatechworld.blogspot.com/2011/01/how-to-remove-jsessionid-from-url-java.html
 2
Author: techwiz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-12 15:24:30