fer*_*olo 5 java security https session servlets
我想使用Java Servlets构建无状态Web应用程序.因为它是无状态的,所以没有HttpSession.浏览器中有一个会话,但每个请求可能由群集中的其他节点处理.存储在浏览器中的会话标识符由服务器生成并加密,因此很难有人制作有效的伪会话ID并绕过登录.
最近我在这个架构中发现了一个漏洞:如果恶意(被感染的)浏览器将会话标识符发送给强盗,则会话很容易被劫持.我无法在每个请求中重新生成会话标识符,因为服务器上没有会话来跟踪预期的请求序列,这也会使异步请求的处理变得复杂.
到目前为止,我的解决方案是获取一些HTTPS会话标识符并将其包含在存储在浏览器中的加密会话ID中.标准servlet可以从HTTPS连接获取此类信息吗?
另一种选择是仅为getId()使用HttpSession,但只有当这样的ID与HTTPS会话绑定时才会起作用,这是我在servlet规范中找不到的.
其他建议是受欢迎的.
servlet容器在HttpServletRequest属性中填充SSL会话ID,供下游组件使用.属性名称恰好是javax.servlet.request.ssl_session_id
.据我所知,这在实现Servlet规范3.0的所有容器中都可用.在Servlet Spec 3.0之前,如果我没有弄错的话,这可以在有限的容器中使用 - Tomcat和Jetty.
但是要预先警告,SSL会话ID被认为比容器生成的HTTP会话cookie值更安全.泄露SSL会话ID甚至会使您的HTTPS连接不安全.
归档时间: |
|
查看次数: |
8086 次 |
最近记录: |