Java JDBC:安全地访问远程Mysql数据库?

Java JDBC:安全地访问远程Mysql数据库?,java,mysql,security,Java,Mysql,Security,有没有一种方法可以通过使用Java反编译器连接到MySQL的远程实例而不公开MySQL凭据 如果桌面应用程序连接到MySQL服务器,您是否应该为用户分配只读访问权限以访问它?这足够安全吗?如果您担心的是避免密码反编译,您可能会混淆您的应用程序 您可以在应用程序中使用只读凭据,但这不会阻止反编译(但是,如果反编译用户将无法更改任何数据,这将是一种方法) 您可以使用自定义类加载器从网络中加载类(该类将包含凭据) 上述技术都不会阻止经验丰富的用户进行反编译并获得凭据。如果您发现自己在问这些问题,那么可

有没有一种方法可以通过使用Java反编译器连接到MySQL的远程实例而不公开MySQL凭据


如果桌面应用程序连接到MySQL服务器,您是否应该为用户分配只读访问权限以访问它?这足够安全吗?

如果您担心的是避免密码反编译,您可能会混淆您的应用程序

您可以在应用程序中使用只读凭据,但这不会阻止反编译(但是,如果反编译用户将无法更改任何数据,这将是一种方法)

您可以使用自定义类加载器从网络中加载类(该类将包含凭据)


上述技术都不会阻止经验丰富的用户进行反编译并获得凭据。

如果您发现自己在问这些问题,那么可能是时候实施一些委托授权了。不要让用户直接从桌面应用程序访问MySQL,而是创建一个精简服务器层,让每个用户分配一组要访问的凭据。对数据库的所有访问都将通过该服务器进行调解,该服务器将负责确保数据库的安全,并确保仅向每个用户提供与他们相关的数据。

也考虑过这一点,但不可能发现中间服务器层并直接使用该服务器吗?是否要限制从java桌面应用程序对此服务器的访问?您永远无法阻止发现您的服务器。这只是互联网的现实。但是,您可以应用更高级别的安全性来强化它。请记住,这会变得越来越昂贵,所以您必须平衡安全性、可用性和您试图保护的数据的重要性。首先,我建议您使用SSL保护服务器,并使用摘要身份验证保护客户端通信。