Java 如何在桌面应用程序中存储数据库凭据?

Java 如何在桌面应用程序中存储数据库凭据?,java,database,storage,credentials,Java,Database,Storage,Credentials,场景是这样的:有一个桌面Java应用程序在随机计算机上运行,不受开发人员的控制。该应用程序连接到安装在同一台计算机上的MySQL服务器 有没有办法保证本地用户的数据库登录凭据安全 我可以想象,作为本地pc的管理员,同时拥有客户端和数据库,要求总体安全性可能是徒劳的,因为凭据需要在系统的某个地方。我想知道在桌面应用程序中硬编码密码是否是最好的选择。我知道这是一个很大的禁忌,但在这种情况下有更好的选择吗 有没有办法保证本地用户的数据库登录凭据安全 简而言之,答案是否定的 不管你做什么,用户名和密码(

场景是这样的:有一个桌面Java应用程序在随机计算机上运行,不受开发人员的控制。该应用程序连接到安装在同一台计算机上的MySQL服务器

有没有办法保证本地用户的数据库登录凭据安全

我可以想象,作为本地pc的管理员,同时拥有客户端和数据库,要求总体安全性可能是徒劳的,因为凭据需要在系统的某个地方。我想知道在桌面应用程序中硬编码密码是否是最好的选择。我知道这是一个很大的禁忌,但在这种情况下有更好的选择吗

有没有办法保证本地用户的数据库登录凭据安全

简而言之,答案是否定的

不管你做什么,用户名和密码(或任何其他形式的凭证)都将被本地用户访问,前提是他/她有技能和动机



1-即使这种方法也不是完全安全的。IIRC,有人用电子显微镜成功地破坏了TPM安全。虽然在正常情况下这不是一种实际的攻击,但另一方面,在TPM上构建一个从用户手中夺取机器控制权的系统在大多数环境中是不可接受的。

您可以将它们保存在对称加密的文件中,并将密钥硬编码到应用程序中。这至少是一个折衷方案,既可以更改密码,又可以提供一些基本的保护,以防本地懒散的修补匠。

如果投票结束此问题的任何人都可以在评论或个人信息中提供理由,那就太好了。我查看了常见问题解答,它在我看来与主题有关。我不认为源代码会有用。我相信范围是合理的,这是关于某个软件架构的安全问题。它不是开放式的,也不是喋喋不休的,它的答案要么是“不”,要么是“是的,这是推荐的方法”。这是我面临的一个实际问题,是可以回答的。这也是特定于编程专业的,除非这个概念所隐含的范围比我预期的要窄