如何在配置文件中隐藏数据库密码 我正在研究一个C++项目,它需要访问数据库来读取它的输入。

如何在配置文件中隐藏数据库密码 我正在研究一个C++项目,它需要访问数据库来读取它的输入。,c++,database,passwords,configuration-files,C++,Database,Passwords,Configuration Files,到目前为止,我们在基于xml的配置文件中使用了默认用户名(postgres)和“固定明文”密码,以及许多其他设置 现在我需要的是在提供配置文件时对用户隐藏密码 仅供参考:开发区域为linux,数据库为postgresql。我们希望为用户提供连接到数据库的配置文件,并在不知道密码的情况下使用它 如果你能给我推荐一份简单快捷的参考书,我将不胜感激。(一份小的阅读材料也会很好) 谢谢我们使用MD5对配置文件中的密码进行加密 您可以使用另一个“硬编码”密码,用于加密配置文件中的密码。因此,将加密的数据库

到目前为止,我们在基于xml的配置文件中使用了默认用户名(postgres)和“固定明文”密码,以及许多其他设置

现在我需要的是在提供配置文件时对用户隐藏密码

仅供参考:开发区域为linux,数据库为postgresql。我们希望为用户提供连接到数据库的配置文件,并在不知道密码的情况下使用它

如果你能给我推荐一份简单快捷的参考书,我将不胜感激。(一份小的阅读材料也会很好)


谢谢

我们使用MD5对配置文件中的密码进行加密

您可以使用另一个“硬编码”密码,用于加密配置文件中的密码。因此,将加密的数据库密码(db_password)写入配置文件,然后在需要访问数据库时,使用硬编码密码解密db_密码。
当然,例如,使用反编译器恢复密码仍然是可能的,但这并不容易。

如果您以任何形式向恶意用户发送包含此密码的程序,您无法阻止恶意用户以某种方式获取此密码

但有两种可能的解决方案:

  • 程序附带的用户和密码对数据库具有只读访问权限

  • 该程序不直接连接到数据库。它向服务器应用程序请求数据,该应用程序不仅可以从实际数据库中获取数据,而无需向用户提供任何密码,而且还可以执行适当的安全检查,以确保该用户仅访问他想要访问的数据等


  • 如果数据库是SQL Server,请使用Windows身份验证,这样就不需要存储密码。@brianbeuning如果开发区域是linux,则数据库是postgresql。我们希望为用户提供连接到数据库的配置文件,并在不知道密码的情况下使用它。唯一安全的解决方案是让用户在每次程序启动时键入密码。如果加密密码,则需要将密钥隐藏在程序中的某个位置。可以找到密钥,但获取密码所需的工作量会增加。MD5是一种单向哈希算法。散列密码将使包括应用程序在内的所有人都无法读取密码。对于任何与安全相关的东西,MD5通常被认为是一个糟糕的选择。它实际上比你想象的要容易。像Wireshark这样的简单网络调试程序可以在应用程序连接到数据库时从网络流量中捕获此密码。您可以使用世界上最复杂的加密技术来保护XML文件中的密码,在这里不会有任何区别。@Havenard我也读了您的答案。我正试图找出你的第二个解决方案,但它不会在1-2天内变得容易和可行,除非我估计过高。也许还能暂时满足我的要求。我会尝试一下,但是我需要一个参考,以便于在C++中加密/解密。你能帮我吗?@Havenard,如果可能的话,你可以使用https连接到数据库。当然,我同意你的解决方案更正确。但是它需要大量的工作来实现,所以我决定建议另一个选项。@rahman,不幸的是,我不能为您命名确切的库。但是一个“快速简单”的解决方案是简单地对数据库密码和主密码进行异或运算。第一个解决方案仍然可以让用户查看数据库,这正是我不想要的。第二个解决方案看起来不错,但对我来说太完美了。我需要一个更简单的解决方案,不会需要一个服务器等,也许只允许访问一些表?这在很大程度上取决于你的具体问题。无论如何,你应该考虑第二个解决方案,即使它耽搁了你的项目几天。如果你想要一个建议,你可以用PHP快速地实现这一点。您的程序对带有必要参数的PHP脚本执行HTTP请求,PHP将以XML或JSON格式返回请求的数据。你的程序解析它,技巧就完成了。