【问题标题】:Sharing an encrypted connection string across multiple applications in .NET在 .NET 中的多个应用程序之间共享加密的连接字符串
【发布时间】:2011-02-24 10:57:07
【问题描述】:

我正在寻找一种加密数据库连接字符串的方法,该字符串将在许多不同的服务和应用程序之间共享。这些应用程序和服务将在同一台机器上运行,但这可能(很可能)在未来发生变化。

我查看了 .NET 的 System.Configuration 命名空间中的功能,但它并没有达到我想要的效果。除非我遗漏了一些非常明显的东西,否则它允许我加密连接字符串,但似乎没有办法导出加密密钥,以便我可以在多台机器上共享它们。事实上,从 MSDN 文档中并不清楚我是否能够在多个进程之间共享这些加密数据。这里可能值得注意的是,这不是一个 ASP.NET Web 服务,所以我不能利用 web.config 文件和 aspnet_regiis.exe 来执行密钥管理。或者我可以吗?

如果无法使用 System.Configuration 类,我很可能会求助于将加密的连接字符串存储在注册表中并进行自己的密钥管理。理想的解决方案是避免使用注册表并使用 .NET 的 System.Configuration 工具。

【问题讨论】:

    标签: .net security encryption connection-string


    【解决方案1】:

    您可以使用与 ASP.NET 中相同的 .config 加密功能,但您需要在 Windows 应用程序的安装(或首次运行)期间执行此操作(我想这就是您要问的为了?)

    请看这篇文章: http://social.msdn.microsoft.com/Forums/en/sqlsecurity/thread/c3a09697-a980-4351-8f40-155a9bcfc939

    【讨论】:

    • 我知道您可以加密连接字符串,并将它们存储在 app.config 中以获得特定的可执行文件。但是,您将如何在多个应用程序/服务之间共享此加密字符串?有一个重载的 OpenExeConfig 方法获取程序集的路径,因此应用程序可以共享配置。但是,当它们被加密时会发生什么?如果我的应用和服务可以在不指定加密密钥的情况下访问相同的加密配置,这是否意味着 每个人 也可以通过 OpenExeConfig 访问这些密钥?
    【解决方案2】:

    我们最终将加密密钥存储在注册表中,并手动处理密钥管理。

    【讨论】:

      猜你喜欢
      • 2010-11-30
      • 2018-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-10
      相关资源
      最近更新 更多