我们现在在许多机器上运行.net应用程序。数据库连接字符串存储在每个数据库的设置XML文件中。每个应用程序启动,作为第一步,从其设置文件加载此字符串。它工作正常,但如果我们不得不改变我们的登录信息,那么找到我们多年来存储它的所有地方将是一场噩梦。此外,对于虚拟机,我们一直在添加新机器,理想的是简单地部署exes / dll并让应用程序自动安全地获取连接字符串。
我考虑加密字符串并将其放在我们的网络服务器上,以便远程应用程序可以通过http和dns名称获取它并解密它但这相当简单,因为安全性对于这条信息非常重要,我需要非常小心。
所以问题是,你如何安全地将连接字符串与远程应用程序断开,所以在启动时他们会知道到达数据库?一旦他们能够做到这一点,他们就可以从数据库中的配置表中获取添加设置。
答案 0 :(得分:3)
您信任哪个系统部分?您必须100%信任客户端,因为一旦他们拥有连接字符串(他们必须拥有),他们就可以对他们想要的数据库进行任何操作。您还必须信任服务器。
所以你似乎相信每个人。这使得系统安全变得简单:无论您如何分发连接字符串,它都已经安全。
在保存和分发密码和连接字符串时,我看到了很多迷信。许多人不安地将它们发送和存放在明文中。这是不合理的,因为客户 最终确实拥有它。这是不可能的。
所以我的建议是:创建一个提供以下API的简单Web服务:
string GetConfigSetting(string name)
客户端可以向该服务请求连接字符串。这项服务非常简单,其界面可能永远不会改变。
在这种情况下,加密一点儿都很困难。可以轻松地反编译客户端应用程序以访问任何解密例程。此外,客户端最终必须解密秘密。此时,控制客户端计算机的攻击者可以清楚地读取该秘密。