我知道很多次这个问题已经被唤醒了,但这对我来说不是很清楚。
我在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 :(得分:1)
是。它定义似乎很脆弱。你不加密任何东西,所以任何人嗅探你客户的HTTP请求都可能拦截她的用户名/密码。
http身份验证机制的默认方法是创建在一段时间后失效的令牌。此令牌将在安全cookie内加密。这样,用户的凭证仅通过网络传输一次,最好通过安全的https连接。然后只有令牌会行进。
无论如何,你不必自己实施这样的机制,更准确地说你不应该自己实施这样的机制,除非你非常肯定你正在做什么
我强烈建议您阅读securing web applications的基础知识。实现此类功能的最常用方法是使用forms based authentication。根据您的应用程序服务器,身份验证机制已经是implemented。请查看关于使用glassfish在jdbc域上进行表单身份验证的示例this post,或使用jboss this post引用同一主题。
希望我帮忙!