我正在开展一个小型的项目,需要使用连接字符串和API密钥等敏感信息,这些信息不应被其他人查看或使用。我使用公共GitHub帐户进行源代码控制。当这些值以明文形式存储在web.config文件中时,通常的源代码控制方法是什么?
我需要在提交代码之前手动删除这些值吗?
我正在开展一个小型的项目,需要使用连接字符串和API密钥等敏感信息,这些信息不应被其他人查看或使用。我使用公共GitHub帐户进行源代码控制。当这些值以明文形式存储在web.config文件中时,通常的源代码控制方法是什么?
我需要在提交代码之前手动删除这些值吗?
我发现有效的方法是提交一个具有空白或虚拟值的文件版本,然后运行:
git update-index --assume-unchanged [fileName]
接着,Git将停止监视该文件的更改,让您可以放入真正的配置信息,而不用担心将其提交。
如果您稍后进行更改并想要检查它们,可以运行:
git update-index --no-assume-unchanged [fileName]
我们将敏感和/或机器特定的配置保存在单独的配置文件中,然后使用configSource将它们包含在以下方式中...
<connectionStrings configSource="cstrings.config"/>
您可以通过检查Web.config和cstrings.config文件来获取通用值,该值可在开发机器上使用。(例如(local),...MyAppNameDb...)。
对于生产环境,请将cstrings.config文件标记为只读,并设置部署脚本以便您不会尝试覆盖它。您的生产连接字符串由该框上的任何安全性保护。这样可以使您的敏感字符串不被版本控制所掌握。
cstrings.config:
<?xml version="1.0" encoding="utf-8" ?>
<connectionStrings>
<add name="Default" connectionString="Server=localhost"/>
</connectionStrings>
您可以检查一个包含虚拟值的config.sample文件。每个开发人员都会将该文件复制到config中,并编辑自己的值。然后,您可以将此本地文件放入.gitignore中。
git rm -cached filename
。此命令将从git存储库中删除文件,但将其保留在本地存储库中。如果将其添加到.gitignore中,则不会跟踪它。 - kosist