4

我们现在在许多机器上运行 .net 应用程序。db 连接字符串存储在每个设置 XML 文件中。每个应用程序都会启动并作为第一步从其设置文件中加载此字符串。它工作得很好,但是如果我们不得不更改我们的登录信息,那么找到我们多年来存储它的所有地方将是一场噩梦。此外,对于虚拟机,我们一直在添加新机器,最好简单地部署 exes/dll 并让应用程序自动安全地获取连接字符串。

我考虑加密字符串并将其放在我们的 Web 服务器上,以便远程应用程序可以通过 http 和 dns 名称获取它并解密它,但这相当简单,因为安全性对于这条信息非常重要,所以我需要非常小心。

所以问题是,您如何安全地将连接字符串抽取到远程应用程序,以便在启动时他们会知道到达数据库?一旦他们能够做到这一点,他们就可以从数据库中的配置表中获取附加设置。

4

1 回答 1

3

您信任系统的哪些部分?您必须 100% 信任客户端,因为一旦他们拥有连接字符串(他们必须拥有),他们就可以连接到他们想要的任何数据库。您还必须信任服务器。

所以看起来你信任每个人。这使得保护系统变得容易:无论您如何分配连接字符串,它已经是安全的。

在保存和分发密码和连接字符串时,我看到了很多迷信。许多人不愿意将它们以明文形式发送和存储。这是不合理的,因为客户最终确实清楚这一点。这是不可能防止的。

所以我的建议是:制作一个提供以下 API 的简单 Web 服务:

string GetConfigSetting(string name)

客户端可以向该服务请求连接字符串。该服务非常简单,以至于它的界面可能永远不会改变。

在这种情况下,加密没有什么意义。客户端应用程序可以很容易地被反编译以访问任何解密例程。此外,客户端最终必须解密该秘密。此时,控制客户端计算机的攻击者可以明文读取秘密。

于 2012-12-20T12:58:21.337 回答