2014-01-19 58 views
0

这个问题已经被我知道了很多次,但这里对我来说还不清楚。在会话中存储密码的JSP

我使用JSP与Hibernate,我想通过数据库的功能来实现用户的认证 - create user ... - 并使用相同的方法登录。 所以每次我的脚本应该知道当前用户的登录名和密码,我知道有类似的会议做的唯一方法:

SessionFactory sf = new Configuration() 
     .configure("/hibernate.cfg.xml") 
     .setProperty("hibernate.connection.username", session.getAttribute("username")) 
     .setProperty("hibernate.connection.password", session.getAttribute("password")) 
     .buildSessionFactory(); 

是它似乎脆弱?如果它在服务器端执行,为什么我应该避免在会话中传递存储?

+0

我对HibernateSession的HttpSession感到困惑。你为什么要这样? – Keerthivasan

+0

我有多个index.jsp,所以hibernateSession会在完成一些脚本执行 – WildDev

回答

1

是的。它肯定看起来很脆弱。你不加密任何东西,所以任何人嗅探你的客户端的HTTP请求可能会拦截她的用户名/密码。

http身份验证机制的默认方法是创建一段时间后失效的令牌。该令牌将在安全cookie内加密。这样,用户的凭据只能通过网络传输一次,最好通过安全的https连接传输。那么只有令牌会传播。

反正你没有实施这样的机制自己,以及更精确你不应该实现这样的自己机制,除非你是非常肯定的,你在做什么。

我强烈建议您阅读securing web applications的基础知识。实现这种功能的最常见方式是使用forms based authentication。根据你的应用服务器,认证机制已经是implemented。例如,使用glassfish检查关于jdbc领域上的表单身份验证的示例this post,或使用jboss引用相同主题的this post

希望我帮了忙!

+0

后死掉,谢谢 – WildDev