jnlp中的Java Web Start和数据库详细信息

时间:2012-11-15 13:53:47

标签: java mysql database java-web-start

是否可以在jnlp - 文件中隐藏数据库详细信息?我的应用使用jwsMySQL - 数据库。在jnlp - 文件中,我已经定义了数据库连接详细信息(用户名,密码,主机名)。

像这样:

property name="dbuser" value="username"

有没有其他方法可以定义数据库详细信息?细节必须易于改变!

3 个答案:

答案 0 :(得分:2)

查看JnlpDownloadServlet Guide: Substitutions

  

JnlpDownloadServlet在您的JNLP文件中进行方便的替换。当客户端请求JNLP文件时,servlet读取原始文件,替换值,并返回结果。


  

是否可以在jnlp-file中隐藏数据库详细信息?

没有。不是高级用户。

答案 1 :(得分:1)

除非您信任所有用户,否则应用可能不应直接与数据库通信。相反,您应该将数据库隐藏在服务之后,例如REST服务。

答案 2 :(得分:0)

永远不要相信客户。用户可以修改您的程序以执行他们想要的操作,并且可以读取您在系统上存储的任何内容或通过网络发送的任何内容。即使你使用加密,如果它在他们的计算机上解密,那么他们也可以阅读。

在某人的计算机上隐藏秘密并希望他们不会看到它并不是一个好主意。当你的程序经常阅读这个秘密时,情况会更加明显。

您应该假设某个地方有一个恶意用户修改了您的程序(在他们的计算机上运行)以进行出价,并且他们知道您发送到他们计算机的所有信息。

您可以为每个用户创建数据库用户,并且仍然允许他们直接连接到您的数据库用户访问权限非常有限的数据库。我认为这也是一个坏主意。数据库通常没有最好的安全性。

相反,防火墙关闭数据库,只允许内部系统直接访问它。您的用户(通过您的Java应用程序)可以改为访问像Chris建议的Web服务。这为您提供了更小的攻击面,更容易保护。