Database 如何安全地存储数据库连接详细信息

Database 如何安全地存储数据库连接详细信息,database,security,Database,Security,在需要打开数据库连接的应用程序中,必须将用户名/密码详细信息发送到数据库。存储和使用这些数据最安全的方法是什么?确切的方法取决于环境,但通常情况下,您将凭据存储在一个只能由应用程序运行时的用户读取的位置。例如,在Windows上,您可以将凭据存储在注册表中受ACL保护的位置,以便只有该用户才能读取它。或者,您可以使用DPAPI对数据进行加密,以进一步保护数据。在Unix中,您可以将其存储在一个受chmod(可选加密)保护的文件中,这样只有应用程序才能读取它。这取决于您使用的数据库。对于Micro

在需要打开数据库连接的应用程序中,必须将用户名/密码详细信息发送到数据库。存储和使用这些数据最安全的方法是什么?

确切的方法取决于环境,但通常情况下,您将凭据存储在一个只能由应用程序运行时的用户读取的位置。例如,在Windows上,您可以将凭据存储在注册表中受ACL保护的位置,以便只有该用户才能读取它。或者,您可以使用DPAPI对数据进行加密,以进一步保护数据。在Unix中,您可以将其存储在一个受
chmod
(可选加密)保护的文件中,这样只有应用程序才能读取它。

这取决于您使用的数据库。对于Microsoft SQL Server,您可以在配置中加密数据库连接字符串,也可以使用集成安全性,在集成安全性中,您可以使用所连接应用程序的标识连接到数据库。

不是在源代码中,而是在应用程序读取的单独文件中。然后使用系统安全性使此文件仅由应用程序用户可读

非常好的问题。
这是一个我们一直在努力解决的问题,并提出了多种方法

第一个答案是根据1800信息公司的建议:

将其放在仅由运行应用程序的用户ID可读的区域中。 我认为你不会得到比这更好的全面解决方案

我们曾玩弄(并拒绝)的其他方法:

  • 将其保存在加密文件中
    • 这只有在攻击者无法访问您的代码以查看加密工作方式时才有效,因此大多数情况下都不太好
  • 将其保存在数据库中,并需要人工登录才能启动应用程序
    • 只要您能够让真人随时启动应用程序,这就行了
  • 依靠内置的安全设备,如.NET中的设备(参见rwwilden的答案)。
    • 如果您是,例如Microsoft商店,这是一个很好的解决方案

请详细说明您的问题。Web/C#/Java等?嗨,越轨者。我试图让这个问题保持一般性,因为我相信这是一个一般性的问题。如果每个人都不这么认为,我会补充一点细节——这是关于网络应用的。你在为谁辩护?你们的发行量是多少?这是与中央数据库通信的客户端应用程序吗?这是一个web应用程序吗?您使用哪种语言和哪种数据库?更详细一点的回答会让你得到更具体的答案。不幸的是,这不是一个一般性的问题。我不确定——我认为“1800信息”的答案是一个很好的、一般性的回答——是否有某种方式可以使建议根据具体情况而有所不同?