2009-07-14 40 views
0

我在想,我们在哪里存储数据库配置在独立的应用程序。客户端直接连接到数据库(我知道这不是一个好主意,但我不允许创建服务器或为RMI开放新端口)在独立应用程序中使用休眠时的数据源配置

我当然不希望用户打开Hibernate config xml文件并获取所有的细节(数据库用户名为&,密码等)。

回答

1

如果您的客户端应用程序最终需要详细信息,那么它们总是可以以某种方式访问​​用户。你可以在这里做的最好的是混淆细节。你可以base64对它们进行编码并将它们存储在属性文件(而不是hibernate.properties)中,然后在获得会话工厂之前将它们加载到自己的文件中。要加载配置属性,您可以使用Configuration类。

如果您希望屏蔽稍微更有知识的客户端,您还可以加密它们并将密钥存储为代码中的静态字段。这并不能保证它的安全,但是你的客户可能不够善于反编译源代码,并亲眼看到你是如何解密这些东西的。

记住支撑服务器端的安全。 (确保数据库帐户拥有最少的权限!)另外,禁止远程服务但允许直接访问数据库对我来说似乎不是一个明智的策略。

0

希望你有一个目录服务器(任何J2EE应用程序服务器都会这样做),然后在那里弹出一个数据源并使用Spring的jndi-lookup来检索它。

失败像@ wds所说,它是加密的凭据或提示,甚至为数据库中的每个用户创建受限帐户。

我没有这样的客户端数据库访问问题 - 在SOA出现之前它工作良好多年 - 只是确保用户帐户只具有有限的权限 - 仅为表选择访问权限,甚至执行所有外观通过视图(再次具有必要的权限)执行并在所需的特效上执行。

相关问题