如何将 Servlet 配置为仅对登录页面使用 SSL,然后对应用程序的其余部分使用普通 HTTP。如果我为需要 SSL 的登录页面制作了一个特殊的页面,而其余页面则没有,并且我使用表单身份验证并指向我之前配置的使用 SSL 的登录页面,当用户请求受保护的页面时,URL栏中不是 login.page,而是请求的页面,但正文是登录表单,我可以不使用 HTTPS 登录。谢谢..
3 回答
我很抱歉这么说,但你似乎想做错了什么。为什么在用户登录后需要 https,因为没有它,会话很容易被劫持,因为会话 cookie 以纯文本形式可见。当然,一个人需要在同一个网络中,甚至可能需要欺骗 IP 地址,但是对于如此多的 WiFi 网络,这实际上是小菜一碟(因为大多数用户并不真正知道如何保护它们)。
因此,除非您在控制环境中部署您的应用程序(仅限 LAN,或多或少的用户数量有限——但为什么在这种情况下仍然需要 SSL?),您可能一直都需要 https。
我们有同样的要求——我们绝对必须对登录进行加密,因为正在发送密码,但我们不希望对通信的其余部分进行加密,因为它的计算量很大。
Tomcat 7 SSL Configuration How-To 清楚地说:
“任何绝对需要安全连接的页面都应检查与页面请求相关的协议类型,如果未指定https ,则采取适当的措施。”
这意味着将非加密登录请求重定向到安全 URL 的责任完全在于登录页面本身。Tomcat 中没有管理方法可以在 servlet 之外对其进行配置。倒霉。因此,我们必须向应用程序供应商请求此功能,因为它是一个商业软件包。
作为妥协第二个要求的粗略解决方法是在端口 8443 上启用 HTTPS 连接器(例如)后禁用端口 8080 上的常规 HTTP 连接器。
ServletRequest 具有确定请求是否在安全通道上发出的方法。您的登录页面可以检查此值并重定向到 https URL。
http://download.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html#isSecure%28%29