独立java应用程序中的PostgreSQL安全连接

独立java应用程序中的PostgreSQL安全连接,java,security,postgresql,Java,Security,Postgresql,我正在创建独立的应用程序(基于Swing的GUI)。它将类似于密码持有者(例如,用户指定站点的登录/密码) 它连接到远程psql数据库。与数据库的连接存储在db.properties文件中 我想要的是: 我如何对将取消归档我的.jar包的用户“隐藏”数据库连接?(最坏情况下,至少是连接用户的密码) 有没有办法防止反编译/调试文件 我建议将DB凭据存储在环境变量中,并在值中读取源代码 这可以避免将凭据存储在源代码管理或二进制文件中,但允许您轻松设置/更改机密 这已成为Heroku和其他托管服务管理

我正在创建独立的应用程序(基于Swing的GUI)。它将类似于密码持有者(例如,用户指定站点的登录/密码)

它连接到远程psql数据库。与数据库的连接存储在db.properties文件中

我想要的是:

  • 我如何对将取消归档我的.jar包的用户“隐藏”数据库连接?(最坏情况下,至少是连接用户的密码)
  • 有没有办法防止反编译/调试文件

  • 我建议将DB凭据存储在环境变量中,并在值中读取源代码

    这可以避免将凭据存储在源代码管理或二进制文件中,但允许您轻松设置/更改机密


    这已成为Heroku和其他托管服务管理应用程序级配置的方式中的最佳实践,并对其进行了建模。

    我现在正在阅读12因素文档,我同意您的看法,但是,让my database access的数据成为环境变量并没有安全问题?您的应用程序服务器必须拥有数据库访问凭据才能运行您的应用程序。环境变量与存储在磁盘上的文件一样安全。保护数据库的最佳方法是创建一个数据库用户帐户,该帐户具有应用程序使用的最低权限。