是否可以在tomcat servlet中禁用jsessionid?

Roy*_*han 67 java tomcat servlets jsessionid

是否有可能在tomcat的url中关闭jsessionid?jsessionid似乎对搜索引擎不太友好.

Poo*_*ool 67

您可以使用此过滤器禁用搜索引擎,但我建议将其用于所有响应,因为它比不友好的搜索引擎更糟糕.它公开了可用于某些安全漏洞的会话ID(更多信息).

Tomcat 6(6.0.30之前)

您可以使用tuckey重写过滤器.

Tuckey过滤器的配置示例:

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

Tomcat 6(6.0.30及以后)

您可以在上下文配置中使用disableURLRewriting来禁用此行为.

Tomcat 7和Tomcat 8

Tomcat 7开始,您可以在会话配置中添加以下内容.

<session-config>
    <tracking-mode>COOKIE</tracking-mode>
</session-config>
Run Code Online (Sandbox Code Playgroud)

  • 为什么在不能创建会话cookie时使用重写器? (6认同)

Spe*_*ktr 50

 <session-config>
     <tracking-mode>COOKIE</tracking-mode>
 </session-config> 
Run Code Online (Sandbox Code Playgroud)

Tomcat 7和Tomcat 8在您的web-app web.xml中支持上述配置,该配置禁用基于URL的会话.

  • 不要忘记使用web-app_3.0 xsd:<web-app xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"xmlns ="http://java.sun.com/xml/ns/javaee"xmlns:web ="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"xsi:schemaLocation ="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id ="CHANGEME"version ="3.0"> (3认同)

Dou*_*oug 19

可以在Tomcat 6.0中执行以下操作:disableURLRewriting

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

例如

<?xml version='1.0' encoding='utf-8'?>
<Context docBase="PATH_TO_WEBAPP" path="/CONTEXT" disableURLRewriting="true">
</Context>
Run Code Online (Sandbox Code Playgroud)

在Tomcat 7.0中,它由应用程序中的以下内容控制:ServletContext.setSessionTrackingModes()

Tomcat 7.0遵循Servlet 3.0规范.


And*_*ffy 13

使用Filter上封装了所有URL responseHttpServletResponseWrapper,简单地将URL返回从不变encodeRedirectUrl,encodeRedirectURL,encodeUrlencodeURL.

  • 示例代码可在此处获得:http://randomcoder.com/articles/jsessionid-considered-harmful服务器可能已关闭; 我不得不从谷歌的缓存中取出它. (3认同)

And*_*eas 5

引用池的回答:

您可以使用tuckey重写过滤器.

您可以使用此过滤器禁用搜索引擎,但我建议将其用于所有响应,因为它比不友好的搜索引擎更糟糕.它公开了可用于某些安全漏洞的会话ID(更多信息).

值得一提的是,即使jsessionid不再可见,这仍然允许基于cookie的会话处理.(取自他的另一篇文章:我可以关闭web.xml中的HttpSession吗?)

PS.我没有足够的声誉来评论,否则我会在上面的帖子中添加这个作为评论.