【问题标题】:Why encrypt a web config file?为什么要加密 Web 配置文件?
【发布时间】:2011-08-23 10:30:24
【问题描述】:

据我所知,web.config 文件中的任何部分都可以使用 aspnet_regiis.exe 进行加密和解密。

如果 aspnet_regiis 可以用来解密 web.config 文件,那么加密它有什么意义呢?是否只是为了防止密码和敏感信息以纯文本形式存储?如果有文件和 exe 的任何人都可以解密它,它真的可以保护敏感的配置信息吗?

更新

感谢所有回答有关机器密钥的人。我问这个问题的原因是因为我们在 codeplex.com 上托管了一个开源项目。但是,我们也将此项目部署到 Windows Azure。我正在尝试找到一种最佳方法来使敏感密码不受源代码控制,但在我部署到 Azure 时将它们作为我项目的一部分保持可访问性。

目前,我正在使用 Web 配置转换来存储 Azure 连接字符串(以及 system.net 的 Gmail 密码)。我创建了一个 Web.PublishToAzure.config 转换文件,只是将该文件置于源代码控制之外。我还找到了this article,这可能是一个更好的选择。再次感谢。

【问题讨论】:

  • “这篇文章”的链接不存在。如果可能的话,我真的很想看看。谢谢。

标签: asp.net web-config passwords encryption


【解决方案1】:

文件使用机器特定的密钥加密。确实,任何具有机器级访问权限的人都可以解密它,但加密它会阻止具​​有 FTP 访问权限的人,因为他们没有机器的 DPAPI 密钥。

【讨论】:

    【解决方案2】:

    我的理解是 aspnet_regiis.exe 使用机器特定的密钥作为“盐”

    如果你在一台机器上加密一个部分,然后将配置带到另一台机器上并尝试解密它,它不会起作用。

    【讨论】:

    • +1 用于提及将加密文件移动到另一台机器的部分。
    【解决方案3】:

    在历史上,浏览器或网络服务器软件中存在允许用户查看服务器硬盘上的任何文件的漏洞。在这种情况下,加密的 web.config 文件可能会有一些用处。但是,如果 Web 服务器已被入侵,允许远程访问服务器本身,那么拥有一个加密的 web.config 文件将是您的后顾之忧。

    【讨论】:

    • 同意。我更多地考虑将密码和其他敏感信息置于源代码控制之外。
    【解决方案4】:

    简单的回答:他们无法访问密钥

    我相信默认情况下密钥存储在机器的证书存储中,因此恶意用户也需要访问它。我不是专家,但这就是它的要点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-14
      • 2012-07-08
      • 2011-07-20
      • 2013-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多