我想知道,我们在独立应用程序中将数据库配置存储在何处。客户端直接连接到数据库(我知道这不是一个好主意,但我不允许为RMI创建服务器或打开新端口)< / p>
我当然不希望用户打开Hibernate config xml文件并获取所有细节(数据库用户名和密码等)。
答案 0 :(得分:1)
如果您的客户端应用程序最终需要详细信息,那么用户将始终以某种方式访问它们。你在这里做的最好的事情是模糊细节。你可以只对它们进行base64编码并将它们存储在属性文件(而不是hibernate.properties)中,然后在获得会话工厂之前自己加载它们。要加载配置属性,您可以使用Configuration类。
如果您正在寻找知识渊博的客户端,您也可以加密它们并将密钥存储为代码中的静态字段。这并不能保证安全,但是你的客户可能不够熟练地反编译源代码并自己查看你是如何解密这些东西的。
请记住在服务器端加强安全性。 (确保数据库帐户具有最小权限!)此外,禁止远程服务但允许直接访问数据库对我来说似乎不是一个非常明智的策略。
答案 1 :(得分:0)
希望您有一个目录服务器(任何J2EE应用服务器都会这样做)然后在那里弹出数据源并使用Spring的jndi-lookup
来检索它。
失败就像@wds说的那样,它是加密的凭证或甚至提示,为数据库中的每个用户创建受限制的帐户。
我没有客户端数据库访问的问题 - 它在SOA出现之前已经运行了好几年 - 只需确保用户帐户只有有限的权限 - 只选择表访问权限甚至执行所有外观 - 通过视图(再次使用必要的权限)并执行所需的过程。