有人只知道我当前的JSESSIONID冒充/劫持我的会话(Tomcat 7 / Glassfish 3.2))吗?

我正在寻找一个简单的英语,“for dummies”解释JSESSIONID如何从安全方面工作

  • 只知道我当前的JSESSIONID的人是否可以冒充/劫持我的会话?
  • 在什么情况下,JSESSIONID将成为URL的一部分,并且这个OWASP#2安全风险 (场景#1)仍然与最新版本的Tomcat / Glassfish相关,如果是,那么“关闭/打开”以防止它?

问:仅仅知道我当前的JSESSIONID的人是否可以冒充/劫持我的会话?

答:是的。

这就是为什么您的网站小心使用cookie非常重要。 实际上,如果您担心数据包嗅探,这意味着您只应在通过HTTPS连接1发送请求时发送会话cookie。 设置’httpOnly’标志可以通过阻止客户端javascript等来使用cookie来帮助解决问题。

问:在什么情况下,JSESSIONID将成为URL的一部分

答:通常,当Web服务器(在容器级别)将会话令牌放入URL时会发生这种情况:

  • 作为用户浏览器不设置cookie的解决方法,或
  • 使URL“适合”用于书签或通过电子邮件发送给其他人。

显然,这是不安全和“不良做法”……虽然短暂的会话超时确实会缓解这种情况。 (或者,它可以通过HTTPS …只要用户不与其他人共享URL 1。


对于Tomcat 6.x,我认为阻止容器(永远)将会话ID添加到URL的方法是将disableURLRewriting="false"属性添加到上下文中。

对于Tomcat 7:

Context.disableURLRewriting:已删除。 通过在Web应用程序或全局CATALINA_BASE / conf / web.xml文件中配置session-config / tracking-mode元素,可以获得等效的效果。


1 – 这假设您已修补(等)您的Web服务器以解决已知的SSL端点漏洞。 如果没有,您的HTTPS连接可能不安全。