保护web.config设置

时间:2016-06-24 14:37:07

标签: c# asp.net asp.net-mvc

我们正在开发一个ASP.NET MVC 5应用程序。我们聘请了一些远程开发人员帮助我们完成该项目。

web.config文件包含我们不想与这些远程开发人员共享的连接字符串和应用程序设置。为了处理我们的应用程序,这些开发人员远程进入我们控制的开发桌面。

在web.config中保护敏感信息的最佳做法是什么,这样开发人员仍然可以运行和调试应用程序但不能读取web.config中的敏感信息?

4 个答案:

答案 0 :(得分:3)

在开发环境中加密web.config毫无意义。真正隐藏开发人员信息的唯一方法就是不要首先将它们提供给他们。

  1. 您必须确保您的“远程开发环境”仅设置为访问开发数据库,​​并且仅配置了其他开发设置。
  2. 请勿将任何敏感数据(生产密码等)签入您的源代码管理中。您可以通过将信息分成external .config files来实现此目的,这样就不会将它们检入源代码管理中。 提示 Ignore the file with the actual passwords并添加另一个具有相同名称的扩展程序,例如 签入的.config.example,以便向开发人员提供有关如何在本地系统上设置文件(无论从源控件存储库的克隆设置系统),这都是一个有用的提醒。
  3. 使用持续集成服务器(TeamCityJenkinsOctopus Deploy等)通过环境变量将敏感信息构建到发布工作流程中。许多CI服务器都能够hide sensitive data from the UI。您可以通过CI按钮单击实践自动部署,这样您的开发人员就无法访问CI服务器中的敏感数据,或者将部署工件提供给受信任的团队以在生产中进行安装。
  4. 确实没有理由让开发人员有机会看到敏感的生产数据,如密码和私钥。

答案 1 :(得分:2)

Ingenioushax建议类似,加密web.config部分的标准方法是使用aspnet_regiis。 Here is a tutorial

答案 2 :(得分:1)

您如何部署应用程序?

如果您使用Octopus Deploy之类的工具 - 只有您的境内团队有权访问 - 您可以使用它来存储任何敏感设置。这些将在部署期间插入到配置文件中。

在Octopus Deploy中,这些被称为configuration variables

这假定敏感设置适用于其他环境,而不是开发人员自己使用的环境(例如,生产和UAT)。

答案 3 :(得分:0)

您可以将配置变量存储在环境变量中并在运行时将它们读入应用程序 - 这样做更好,因为每个开发人员和环境都可以拥有自己的配置,永远不会与其他配置冲突。