Database 如何安全地存储数据库连接详细信息
在需要打开数据库连接的应用程序中,必须将用户名/密码详细信息发送到数据库。存储和使用这些数据最安全的方法是什么?确切的方法取决于环境,但通常情况下,您将凭据存储在一个只能由应用程序运行时的用户读取的位置。例如,在Windows上,您可以将凭据存储在注册表中受ACL保护的位置,以便只有该用户才能读取它。或者,您可以使用DPAPI对数据进行加密,以进一步保护数据。在Unix中,您可以将其存储在一个受Database 如何安全地存储数据库连接详细信息,database,security,Database,Security,在需要打开数据库连接的应用程序中,必须将用户名/密码详细信息发送到数据库。存储和使用这些数据最安全的方法是什么?确切的方法取决于环境,但通常情况下,您将凭据存储在一个只能由应用程序运行时的用户读取的位置。例如,在Windows上,您可以将凭据存储在注册表中受ACL保护的位置,以便只有该用户才能读取它。或者,您可以使用DPAPI对数据进行加密,以进一步保护数据。在Unix中,您可以将其存储在一个受chmod(可选加密)保护的文件中,这样只有应用程序才能读取它。这取决于您使用的数据库。对于Micro
chmod
(可选加密)保护的文件中,这样只有应用程序才能读取它。这取决于您使用的数据库。对于Microsoft SQL Server,您可以在配置中加密数据库连接字符串,也可以使用集成安全性,在集成安全性中,您可以使用所连接应用程序的标识连接到数据库。不是在源代码中,而是在应用程序读取的单独文件中。然后使用系统安全性使此文件仅由应用程序用户可读非常好的问题。这是一个我们一直在努力解决的问题,并提出了多种方法 第一个答案是根据1800信息公司的建议: 将其放在仅由运行应用程序的用户ID可读的区域中。 我认为你不会得到比这更好的全面解决方案 我们曾玩弄(并拒绝)的其他方法:
- 将其保存在加密文件中
- 这只有在攻击者无法访问您的代码以查看加密工作方式时才有效,因此大多数情况下都不太好
- 将其保存在数据库中,并需要人工登录才能启动应用程序
- 只要您能够让真人随时启动应用程序,这就行了
- 依靠内置的安全设备,如.NET中的设备(参见rwwilden的答案)。
- 如果您是,例如Microsoft商店,这是一个很好的解决方案