我在本地测试,http://127.0.0.1:8080/freee/page/index.jsp
用firefox的调试功能(请求头信息)查看cookie:
如下:JSESSIONID=11A1F1F0B28A5C11F7CD4B4D2850138F
而我在email.163.com登录之后(http://g4a36.mail.163.com/js3/main.jsp?sid=mAvCdXGKjEryNEViraKKtfhbOjZXRCji)(请求头信息)
的cookie:
如下:
Province=020; City=020; logType=-1; nts_mail_user=15217301011:-1:1; [email protected]|1300161363|0|mail163|11&17|gud&1300160277&mail163#gud&440100#10|152011&1; MAIL163_SSN=javaweb; USERTRACK=183.1.233.219.1300159070180478; ntes_mail_firstpage=normal; NTES_SESS=vGDH4F6TT5sMWIRtJuZCwkR.wjHrfAWF7XiG.X4_lyNJO_z6kZeslJRMZcs8j0728i_oUGedEHvHudxCKMeuapcpnNniIhzY8RF5kXKmJjvDU8yJbUgp0TxOLMnBPGDWUCLnx9MRHSd0xusZLJmrW.irU; S_INFO=1300161363|0|3&100##; Coremail=1300160277890%vBaZyCdrBAUmSkIygcrrkQgLkXgcLIZt%g2a79.mail.163.com; ntes_misc=0|59.174.77.170; cm_last_info=dT1tbjk2MG1uJTQwMTYzLmNvbSZkPWh0dHAlM0ElMkYlMkZnMmE3OS5tYWlsLjE2My5jb20lMkZqczMlMkZtYWluLmpzcCUzRnNpZCUzRHZCYVp5Q2RyQkFVbVNrSXlnY3Jya1FnTGtYZ2NMSVp0JnM9dkJhWnlDZHJCQVVtU2tJeWdjcnJrUWdMa1hnY0xJWnQmaD1odHRwJTNBJTJGJTJGZzJhNzkubWFpbC4xNjMuY29tJTJGanMzJTJGbWFpbi5qc3AlM0ZzaWQlM0R2QmFaeUNkckJBVW1Ta0l5Z2NycmtRZ0xrWGdjTEladCZ3PWcyYTc5Lm1haWwuMTYzLmNvbSZsPS0xJnQ9LTEmdj0w; Coremail.sid=vBaZyCdrBAUmSkIygcrrkQgLkXgcLIZt; mail_style=js35; [email protected]; mail_host=g2a79.mail.163.com; MAIL_SESS=Is59Gt19p8S1lSSvtr._2M__hzwEPme0vH8JOHBMrw_zeMp1Rj2GrzAxjZG5of3058MuDJ2.XTITg.9Vqx2gdCZC4_48QKpS5AEbRHqazoIhD5wzsDPCfY9eix4ktJhNDVi49lxATv.f9gGjizacNO8cD; mail_pos=152_0
很显然,没有JSESSIONID我们知道:一旦有JSESSIONID,就很不安全。(大家可以自行查看 firefox 的 请求头信息 )请问如何做到如何在客户端(在 请求头信息 里隐藏)隐藏JSESSIONID

解决方案 »

  1.   

    用用户名作为KEY,到后台根据KEY查询信息
      

  2.   

    一样有MAIL_SESS这样的SessionID,有什么区别。只是名称换了而已
      

  3.   

    在一些服务器中,例如weblogic ,可以修改sessionid在cookie中的名称,生成方法。所谓的没有jsessionid 就是这样玩出来的。sessionid必然存在,要么通过cookie传,要么通过参数传递。
      

  4.   

    Tomcat 5.5.28; Tomcat 6.0.19 及以后版本可以设置 org.apache.catalina.SESSION_COOKIE_NAME 的系统参数,将这个系统参数的值设为其他的,默认为 JESSIONID。这些版本以下无法实现。Tomcat 7.0.x 遵从了 Servlet 3.0 规范,可以直接从 SessionCookieConfig#setName 中设置这个值,根据 Servlet 3.0 规范,所有实现 Servlet 3.0 规范的容器默认值必须是 JESSIONID,用户可以使用 SessionCookieConfig#setName 重置这个值,详见这个接口的 API 文档:http://download.oracle.com/javaee/6/api/javax/servlet/SessionCookieConfig.html#setName%28java.lang.String%29
    Tomcat 甚至扩展 StandardManager 还可以把 Session ID 的生成算法给改掉
      

  5.   

    设置 org.apache.catalina.SESSION_COOKIE_NAME 的系统参数怎么设置。在哪设置,。
      

  6.   

    servlet3.0中,有两种方法。1:
    在web.xml中配置:
    <session-config>
    <cookie-config>
    <name>HACKSESSIONID</name>
    </cookie-config>
    </session-config>第二写监听器:package com.weblistener;
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
    import javax.servlet.SessionCookieConfig;
    public class SessionCookieListener implements ServletContextListener
    { public void contextDestroyed(ServletContextEvent arg0)
    {

    } public void contextInitialized(ServletContextEvent contextEvent)
    {
    SessionCookieConfig scc = contextEvent.getServletContext().getSessionCookieConfig();
    scc.setName("hackSessionid");
    }}web.xml
    <listener>
    <listener-class>com.weblistener.SessionCookieListener</listener-class>
    </listener>
      

  7.   

    现在的问题是:怎么在tomcat5.x和tomcat6.x
    中更改cookie的名称
      

  8.   

    不用地址+?号的传递方式不就看不到了?自己写个form,submit过去吧~~
      

  9.   

    tomcat5.x和tomcat6.x 中方法是修改启动文件,加上参数set CATALINA_OPTS=%CATALINA_OPTS% -Dorg.apache.catalina.SESSION_COOKIE_NAME=MyName这样就可以