【问题标题】:encrypted connection string in web.configweb.config 中的加密连接字符串
【发布时间】:2012-06-18 19:12:54
【问题描述】:

当加密的连接字符串保存在外部配置文件中并由 asp.net 应用程序的 web.config 的 connectionStrings 部分中的 configSource 属性指定时,如何在 C# 代码中读取加密的连接字符串?

外部配置文件应该只有 connectionStrings 节点,但是当它被加密时,configDataProvider 节点也应该存在于同一个文件中。因此它不能在 configSource 属性中使用。

我已加密连接字符串,并希望将其保存在外部配置文件中。如何处理?

感谢您的任何指点。

【问题讨论】:

  • 您是否尝试将连接字符串部分放入外部文件并然后对其进行加密?
  • 有点过时了,但你可以试试这个解决方案:Encrypting string in an external config for ASP.NET
  • 如果将其放入外部文件然后对其进行加密,则会插入 configProtectedData 节点,之后使用 configSource 属性将无法读取它。

标签: asp.net encryption web-config connection-string


【解决方案1】:

在您的 app.config 中:

<configuration>
    <connectionStrings configSource="foo.config" />
    ...
</configuration>

在你的foo.config:

<connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
    <EncryptedData>
        <CipherData>
            <CipherValue>
                AQAAANCMnd8BFdE....
            </CipherValue>
        </CipherData>
    </EncryptedData>
</connectionStrings>

在你的代码中:

ConfigurationManager.ConnectionStrings["someKey"]

【讨论】:

  • 我希望 foo.config 采用纯文本格式并在部署期间加密,最好不必手动执行任何操作,例如删除任何节点。
  • @Sam,了解如何完成加密:msdn.microsoft.com/en-us/library/ff647398.aspx。该过程当然可以是脚本化的和自动化的。我所展示的是您的配置在运行时应该如何看待。为了达到此配置,您可以拥有包含连接字符串的未加密文件,并编写文档中描述的加密过程脚本。因此,请继续阅读此文档以了解此过程,以便您可以在构建过程中编写脚本。
  • 我将连接字符串作为单独的文件 foo.config。比如说,我在部署期间使用脚本加密,使用 -prov "Myprovider" 开关,该开关将在 foo.config 中插入 configProtectedData 节点。这将导致错误“configSource 文件的格式必须是包含节名称的元素。”在 C# 代码中访问时。我错过了什么吗?
  • 是的,你错过了一些东西。加密时,您不能将 connectionStrings 直接放在单独的文件中。您必须有一个临时 .config 文件,其中包含所有带有未加密连接字符串的 &lt;configuration&gt; 部分。您必须加密的是这个临时配置文件。加密后,您可以将加密的连接字符串提取到 foo.config 中。
  • 我就是这么想的。但是这个提取过程,我需要为此编写一些脚本。
猜你喜欢
  • 2010-12-14
  • 1970-01-01
  • 2011-08-19
  • 2012-05-31
  • 1970-01-01
  • 2011-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多