如何在HTTPSession中使用未加密的密码重定向到logon.jsp?

时间:2009-05-22 14:29:38

标签: security authentication jsp session java-ee

我有一个使用基于JAAS表单的身份验证的j2ee Web应用程序。但是,由于一些不寻常的要求,我不能让用户直接在logon.jsp表单中输入他们的用户名和密码并让他们提交。相反,我必须在单独的页面上收集数据,然后重定向到logon.jsp以将其登录。

我在想做的是在HTTPSession中存储未加密的用户名/密码。当我准备进行身份验证时,我使用response.redirect路由到logon.jsp。在logon.jsp中,我从会话中取出用户名和密码,填写标准的“j-security-check”表单,然后使用javascript提交表单。

这有多少安全漏洞?我很不舒服地通过浏览器路由请求转到logon.jsp(这就是重定向的作用),因为有人可能会访问会话,因此可以访问未加密的密码。如果我使用HTTPS / SSL,这可能是一种情况吗?它将如何被利用?

我考虑直接在JSP中调用登录servlet而不使用表单,但这似乎不是一个可行的选择,特别是因为我失去了对不同J2EE容器/应用程序服务器的隔离。

任何人都知道如何限制这个安全漏洞?使用forward而不是重定向会更好,因为它不会回到浏览器?

这有多糟糕?

3 个答案:

答案 0 :(得分:1)

似乎很容易将这种做法描述为可怕的,但更难以解释为什么它是可怕的,或者在使用SSL的情况下如何利用它? 。我们一直将敏感信息放在HTTPS / SSL手中,我不知道这有什么不同。

最佳做法是避免在不必要时与浏览器进行交互。您必须管理安全性和可用性之间的回报,评估您的应用程序要求和敏感性,并采取相应的行动。

在任何可能的情况下,使用转发而不是重定向会阻止浏览器参与,因为转发是在Web层内部执行的。

答案 1 :(得分:0)

听起来您正在将密码发送回用户,以便用户可以将表单重新提交给真正的login.jsp。这听起来像战场地球对我来说可怕。假设用户在输入用户名后输入密码,密码表格是否可以直接提交给登录处理程序?

答案 2 :(得分:-1)

天啊。密码安全的第一条规则永远不会以明文传输密码。如果您以明文方式将其存储在会话中,这意味着您可能以明文方式将密码从用户发送到服务器(除非您使用的是我强烈建议的SSL)。这意味着任何数据包嗅探器都可以找到密码。至于以明文方式将它们存储在会话中,这意味着你很容易受到会话劫持的攻击。<​​/ p>

换句话说。它是可怕的。不要这样做。