我有一个JAAS应用程序,它使用基于j2ee表单的身份验证。但是,由于一些不寻常的要求,我不能让用户直接在logon.jsp表单中输入他们的用户名和密码并让他们提交。相反,我必须在单独的页面上收集数据,然后重定向到logon.jsp以登录它们。
我正在考虑做的是将未加密的用户名/密码存储在HTTPSession中。当我准备好进行身份验证时,我使用response.redirect路由到logon.jsp。在logon.jsp中,我从会话中取出用户名和密码,填充标准的'j-security-check‘表单,然后使用javascript提交表单。
这是一个多大的安全漏洞?我不喜欢通过浏览器将请求路由到logon.jsp (这就是重定向所做的事情),因为有人可能会访问会话,从而获得未加密的密码。它将如何被利用?
我考虑过在JSP中直接调用登录servlet而不使用表单,但这似乎不是一个可行的选择,特别是因为我失去了与不同的J2EE容器/应用程序服务器的隔离。
使用转发而不是重定向会不会更好,因为它不会返回浏览器?
这有多糟糕?
发布于 2009-05-25 15:19:53
似乎很容易将这种做法描述为可怕的,但要解释为什么它是可怕的,或者在使用SSL的情况下如何利用它要困难得多。我们一直将敏感信息放在HTTPS / SSL的手中,我看不出这有什么不同。
最佳实践是避免在不必要的情况下与浏览器交互。您必须管理安全性和可用性之间的收益,评估您的应用程序需求和敏感度,并采取相应的行动。
在任何情况下,使用转发而不是重定向将阻止浏览器参与,因为转发是在web层内部执行的。
发布于 2009-05-22 14:34:24
这听起来像是将密码发送回用户,以便用户可以将表单重新提交给真正的login.jsp。对我来说这听起来很恐怖。假设用户在输入用户名后输入密码,那么密码表单不能直接提交给登录处理程序吗?
https://stackoverflow.com/questions/898148
复制相似问题