【问题标题】:How to store database credentials in a desktop application? [closed]如何在桌面应用程序中存储数据库凭据? [关闭]
【发布时间】:2012-11-28 13:18:34
【问题描述】:

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

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

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

【问题讨论】:

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

标签: java database storage credentials


【解决方案1】:

您可以将它们保存在一个对称加密的文件中,并将密钥硬编码到应用程序中。这至少是在能够更改密码和针对懒惰的本地修补程序提供一些基本保护之间的一种折衷。

【讨论】:

    【解决方案2】:

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

    简短的回答是否定的。

    无论您做什么1,本地用户都可以访问用户名和密码(或任何其他形式的凭据),前提是他/她有技能和动机.


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-08
      • 1970-01-01
      • 2017-01-16
      • 1970-01-01
      相关资源
      最近更新 更多