据我了解,当用户登录 Spring Security 使 Session 无效并创建一个新的。
因此,如果我来自带有明确 sessionID cookie 的 http,则 Spring Security 应该设置一个新的 sessionID 'secure' cookie,该 cookie 将仅在随后的 https 请求中由浏览器发回。
我缺少的是当“登录”用户从 https 切换到 http 时,必须有一个 sessionID cookie 作为非安全 cookie 存储在某处以跟踪会话。
我不明白 Spring 是如何管理的。
用户登录后,如果他浏览到 http,那么明确的 sessionID cookie 是否与安全的 SessionID 相同,它是否对世界可见?有人可以阅读并劫持会话。
我不了解 Spring Security 流程,有人可以解释一下它是如何工作的吗?
谢谢
4511 次
1 回答
0
出于您描述的那个原因,最好不要混合 HTTP 和 HTTPS 会话。事实上,似乎通过 HTTPS 登录然后回退到 HTTP 将不起作用(因为浏览器不会发送安全会话 cookie)。
[...] 在 HTTPS 下创建的会话(其会话 cookie 被标记为“安全”)随后无法在 HTTP 下使用。浏览器不会将 cookie 发送回服务器,并且任何会话状态都将丢失(包括安全上下文信息)。首先在 HTTP 中启动会话应该可以工作,因为会话 cookie 不会被标记为安全(您还必须禁用 Spring Security 的会话固定保护支持以防止它在登录时创建新的安全会话(您始终可以创建一个新的会话自己在稍后阶段)。请注意,在 HTTP 和 HTTPS 之间切换通常不是一个好主意,因为任何使用 HTTP 的应用程序都容易受到中间人攻击。要真正安全,用户应该开始以 HTTPS 访问您的站点并继续使用它,直到他们注销为止。即使从通过 HTTP 访问的页面单击 HTTPS 链接也存在潜在风险。
来自http://static.springsource.org/spring-security/site/faq.html
于 2011-03-03T03:00:10.927 回答