JSP在会话中存储密码

时间:2014-01-19 11:58:42

标签: java hibernate jsp session

我知道很多次这个问题已经被唤醒了,但这对我来说不是很清楚。

我在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();

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

1 个答案:

答案 0 :(得分:1)

是。它定义似乎很脆弱。你不加密任何东西,所以任何人嗅探你客户的HTTP请求都可能拦截她的用户名/密码。

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

无论如何,你不必自己实施这样的机制,更准确地说你不应该自己实施这样的机制,除非你非常肯定你正在做什么

我强烈建议您阅读securing web applications的基础知识。实现此类功能的最常用方法是使用forms based authentication。根据您的应用程序服务器,身份验证机制已经是implemented。请查看关于使用glassfish在jdbc域上进行表单身份验证的示例this post,或使用jboss this post引用同一主题。

希望我帮忙!