保护数据库连接字符串

本文关键字:字符串 数据库连接 保护 | 更新日期: 2023-09-27 18:16:22

我正在寻找有关存储和保护数据库连接字符串的一些建议和最佳实践建议。App.config似乎是微软首选的处理应用程序配置的方式,但是我在过去的工作中遇到了一些麻烦——或者我只是不理解背后的哲学。

对我来说,第一件显而易见的事情是:永远不要以明文形式存储连接信息。但是,App.config总是明文的。避免在App.config中存储人类可读信息的唯一方法似乎是Protected Configuration。但是,还是有一个很大的问题:如果部署应用程序,配置将以明文形式部署——加密(没有某些工具的帮助)似乎只有在应用程序第一次启动时才有可能。

这对我来说似乎不安全,因为如果有人在第一次运行应用程序之前检查应用程序目录(存储配置的地方),他会收到大量以纯文本形式的敏感信息。

Also:我如何保护作为无特权默认用户运行的应用程序中的配置?AFAIK保存应用程序设置需要管理员权限

微软真的这么想过吗?或者微软提供了一种不同的方式?

保护数据库连接字符串

您可以轻松地加密web.config中的配置部分,

看起来是这样的

<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
    <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
      xmlns="http://www.w3.org/2001/04/xmlenc#">
      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
        <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
          <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
          <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
            <KeyName>Rsa Key</KeyName>
          </KeyInfo>
          <CipherData>
            <CipherValue>R7cyuRk+SXJoimz7wlOpJr/YLeADGnwJVcmElHbrG/B5dDTE4C9rzSmmTsbJ9Xcl2oDQt1qYma9L7pzQsQQYqLrkajqJ4i6ZQH1cmiot8ja7Vh+yItes7TRU1AoXN9T0mbX5H1Axm0O3X/285/MdXXTUlPkDMAZXmzNVeEJHSCE=</CipherValue>
          </CipherData>
        </EncryptedKey>
      </KeyInfo>
      <CipherData>
        <CipherValue>d2++QtjcVwIkJLsye+dNJbCveORxeWiVSJIbcQQqAFofhay1wMci8FFlbQWttiRYFcvxrmVfNSxoZV8GjfPtppiodhOzQZ+0/QIFiU9Cifqh/T/7JyFkFSn13bTKjbYmHObKAzZ+Eg6gCXBxsVErzH9GRphlsz5ru1BytFYxo/lUGRvZfpLHLYWRuFyLXnxNoAGfL1mpQM7M46x5YWRMsNsNEKTo/PU9/Jvnh/lT+GlcgCs2JRpyzSfKE7zSJH+TpIRtd86PwQ5HG3Pd2frYdYw0rmlmlI9D</CipherValue>
      </CipherData>
    </EncryptedData>
  </connectionStrings>

看这里>你不需要一个工具来解除加密,这可以很容易地在代码中完成,这是一种常见的做法。