【发布时间】:2011-06-05 20:17:55
【问题描述】:
我有一个在 Tomcat 6.0.29 上运行的 Java 应用程序,前面是 Apache 2.2.3。 登录页面使用 HTTPS,而大多数页面使用 HTTP。
如果用户尝试访问受登录保护的页面 (HTTP),他会被重定向到登录页面 (HTTPS)、登录,然后被重定向回最初请求的页面。 这很好用,因为 JSESSIONID cookie 被设置为不安全的,并且用于 HTTP 和 HTTPS。
但是,如果用户从登录页面 (HTTPS) 开始,则 JSESSIONID cookie 设置为 Secure,因此在登录后重定向到 HTTP 下的页面时会话不可用,从而强制新会话并重定向到登录页面再次。不过这次它起作用了,因为这一次 JSESSIONID cookie 被设置为不安全的。
如何避免用户第一次点击登录页面时必须登录两次?
【问题讨论】:
-
谢谢@leonbloy。这是非常相关的(除了我自己控制登录页面)。在过滤器中添加非安全 cookie 的解决方案可以做到。但这感觉就像一个黑客,必须有更好的方法..
-
最简单的解决方案可能是 98% 的网站,让登录页面不安全,同时发布到安全的 URL。但这是一个安全问题,因为中间人可能会更改帖子 URL 并收集用户名/密码
-
你可以做一些明智的事情,让整个网站都需要在 https 后面进行身份验证。如果您要发送身份验证 cookie 并且可能是不安全的受限数据,那么开始使用受保护的登录表单是没有意义的。
-
@OrangeDog 我知道,但这对这个特定的应用程序来说并不是很大的威胁。关于运行纯 HTTPS 的优缺点,SO 上有一些线程。我读过它们,我的结论是我不想读。像大多数网站一样,例如stackoverflow.com
标签: java https apache2 tomcat6 httpsession