【问题标题】:Where to store a password that you don't want in source control在源代码管理中存储不需要的密码的位置
【发布时间】:2018-09-03 13:47:05
【问题描述】:

虽然我目前正在调试

#if Debug
   new NetworkCredential("myUsername","myPassword", "myDomain");
#endif

一个好的解决方案是将密码存储在一个文件中,然后我读取该值(仅在调试中)。然后将该文件添加到 .gitignore 中?

Production 永远不会读取此值,因为它是从登录用户的 RestSharp 的 NtlmAuthenticator 获取的。

【问题讨论】:

  • 在 VS 中使用环境变量或 CLI 参数 -> 这些是 VS 的一部分,而不是您的源代码

标签: c# git passwords


【解决方案1】:

良好的做法是将其保存在您添加到 .gitignore 的秘密配置文件中

您可以使用appSettings 中的file 属性来做到这一点,例如:

<appSettings file="..\..\AppSettingsSecrets.config">
    <!-- whatever keys that are kept on source control -->
</appSettings>

AppSettingsSecrets.config

<appSettings>   
    <!-- SendGrid-->
    <add key="mailAccount" value="My mail account." />
    <add key="mailPassword" value="My mail password." />
    <!-- Twilio-->
    <add key="TwilioSid" value="My Twilio SID." />
    <add key="TwilioToken" value="My Twilio Token." />
    <add key="TwilioFromPhone" value="+12065551234" />

    <add key="GoogClientID" value="1.apps.googleusercontent.com" />
    <add key="GoogClientSecret" value="My Google client secret." />
</appSettings>

【讨论】:

  • 在生产中会不会出现appsettings指向“AppSettingsSecrets.config”并且它不存在的问题?
  • 如果文件不存在不会崩溃,只会被忽略。当然,这意味着您将无法访问任何令牌/密码/等。你存储在那里(因为它们不存在),缺少这些可能会导致问题,但这很明显。如果您将这些密钥放在生产环境主文件的appSettings 中,它将运行良好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-07
  • 1970-01-01
  • 2021-08-09
  • 2012-05-19
  • 2019-08-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多