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

Era*_*dan 7 java security servlets jsessionid session-hijacking

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

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

Ste*_*n C 13

问:仅仅知道我当前的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连接可能不安全.