在一个基于专有MVC和授权模型的Web应用程序中,我们最近迁移到了Spring MVC。作为这一举措的一部分,我们还考虑放弃每个请求中传递的本地创建的GUID,并改为基于cookie的Session ID。
表面上看,对我们来说,这样做似乎会带来很大的劣势,因为标准的JSESSION/HttpSession似乎是所有安全问题的根源:
1. 会话固定攻击(在现有代码中,只有在成功登录后才创建会话,因此我们永远不需要使会话失效)。 2. CSRF - Session从未作为cookie传递,因此这从未成为风险(而且,它是一个难以处理的问题,因为没有真正的框架或通用解决方案,已检查HDIV和CSRFGuard)。 3. 测试可用性- QA可以轻松地拥有多个用户与多个角色连接到同一服务器,而使用JSESSION则不可能。 4. 在各种容器(Weblogic、JBOSS和Websphere)中创建和使HTTPSession失效的不一致性。 5. 在HTTP到HTTPS之间移动时,JSession处理的不一致性。
那么,除了“成为标准”的明显优势外,有什么线索可以让我选择JSESSION路线吗?
表面上看,对我们来说,这样做似乎会带来很大的劣势,因为标准的JSESSION/HttpSession似乎是所有安全问题的根源:
1. 会话固定攻击(在现有代码中,只有在成功登录后才创建会话,因此我们永远不需要使会话失效)。 2. CSRF - Session从未作为cookie传递,因此这从未成为风险(而且,它是一个难以处理的问题,因为没有真正的框架或通用解决方案,已检查HDIV和CSRFGuard)。 3. 测试可用性- QA可以轻松地拥有多个用户与多个角色连接到同一服务器,而使用JSESSION则不可能。 4. 在各种容器(Weblogic、JBOSS和Websphere)中创建和使HTTPSession失效的不一致性。 5. 在HTTP到HTTPS之间移动时,JSession处理的不一致性。
那么,除了“成为标准”的明显优势外,有什么线索可以让我选择JSESSION路线吗?