【问题标题】:Storing Web.config in Git在 Git 中存储 Web.config
【发布时间】:2017-07-22 09:05:34
【问题描述】:

我对在 Git-hub 中存储 web.config 文件有疑问,是否推荐?

这不是安全漏洞吗?

另外,不同环境的web.config在不同的环境中会有所不同,因此如何保持不同版本的web.config是相同的repo和branch?

【问题讨论】:

  • 您使用什么来构建/发布?从 Visual Studio 发布? PowerShell脚本? TFS?队城?章鱼?
  • 从 VS 发布
  • 我建议您立即停止这种做法。我们通常在web.config 中放置足够的配置来在本地运行项目。没有敏感信息可以检查到源代码控制中。然后我们在构建期间(在 TFS 中)进行配置转换,它将部署需要更改的所有值转换为标记化文件。例如__ConnectionStrings.ProjectDB__。然后在发布时,TFS 任务会将适当的值插入到要部署到的环境的 web.config 文件中。另一种选择是完全避免使用 web.config,使用环境变量。

标签: c# asp.net .net github


【解决方案1】:

是的。

使用服务器级机密存储数据库连接字符串等敏感信息。

在 IIS 中,您可以使用 ASPNET_REGIIS - 它允许您添加 IIS 可以访问的秘密配置,但不会以纯文本形式保存在 Web 文件中。

在 .NET 核心中有一个新的 Microsoft.Extensions.SecretManager.Tools 可以做同样的事情。

对于不同的环境,您可以have multiple web.config files,例如web.release.config 和web.debug.config。

【讨论】:

    【解决方案2】:

    您的 web.config 文件本身不是安全问题。您可能在其中拥有的键(如连接字符串)确实非常敏感,不应该在版本控制中。问题是如何在不将它们放在 web.config(或任何其他版本控制的设置/配置文件)中的情况下管理这些密钥。

    Keith 是正确的,您应该使用服务器级机密。如果您自己管理服务器,则可以使用他的设置方法,但如果您使用服务,则需要按照他们指定的方式设置密钥。

    Azure 上的示例

    How and where to define an environment variable on azure

    Heroku 上的另一个

    https://devcenter.heroku.com/articles/config-vars

    设置服务器级机密只是第一步。从 web.config 中取出密钥后,您必须在本地进行设置。这是一篇关于使用本地 machine.config 设置它们的博客文章。

    http://krow.tech/posts/Keeping-Your-Secret-Configs-Private

    【讨论】:

      猜你喜欢
      • 2013-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-28
      • 2018-04-05
      • 1970-01-01
      • 2017-12-27
      • 1970-01-01
      相关资源
      最近更新 更多