代码之家  ›  专栏  ›  技术社区  ›  Bobby Jack

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

  •  6
  • Bobby Jack  · 技术社区  · 17 年前

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

    4 回复  |  直到 17 年前
        1
  •  3
  •   1800 INFORMATION    17 年前

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

        2
  •  2
  •   Ronald Wildenberg    17 年前

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

        3
  •  2
  •   AJ.    17 年前

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

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

    把它放在一个只能被运行应用程序的用户ID读取的区域。

    我认为你不会得到比这更好的全面解决方案。

    我们玩过的其他方法(并拒绝了):

    • 将其保存在加密文件中
      • 只有当攻击者无法访问您的代码来查看加密的工作方式时,这才有效,因此大多数情况下不是很好。
    • 将其保存到数据库中,并要求用户登录才能启动应用程序
      • 只要你能让一个真正的人随时启动应用程序,这就行了。
    • 依赖于内置的安全设备,例如.NET中的安全设备(请参见Rwwilden的答案)。
      • 如果您是,这是一个很好的解决方案,例如微软商店。
        4
  •  0
  •   chburd    17 年前

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