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

时间:2012-05-07 03:51:33

标签: java security servlets jsessionid session-hijacking

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

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

1 个答案:

答案 0 :(得分:13)

  问:有人只知道我当前的JSESSIONID冒充/劫持我的会话吗?

答:是的。

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

  

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

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

  • 作为用户浏览器未设置Cookie的解决方法,或
  • 使网址“适合”加入书签或通过电子邮件发送给其他人。

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


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

对于Tomcat 7:

  

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


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