【问题标题】:Why shouldn't passwords be saved inside of appsettings.json in ASP.NET Core?为什么不应该将密码保存在 ASP.NET Core 的 appsettings.json 中?
【发布时间】:2020-05-08 15:26:36
【问题描述】:

official documentation listsappsettings.json 的以下做法:

  • 切勿在配置提供程序代码或纯文本配置文件中存储密码或其他敏感数据。
  • 请勿在开发或测试环境中使用生产机密。
  • 在项目之外指定机密,这样它们就不会被意外提交到源代码存储库。

据我所知,当您在 IIS 上托管应用程序时不会提供 appsettings.json,因此无法从 Web 访问。我们还自己托管源代码(即在我们自己的服务器上)。据我所知,唯一真正的危险是当有人设法破坏整个系统并实际访问 appsettings.json 本身时。

但是还有其他原因将敏感数据保留在 appsettings.json 之外吗?还有其他我忽略的安全方面吗?

我知道有几个问题询问如何 保证 appsettings.json 的安全,但不知道实际风险是什么。

【问题讨论】:

    标签: security asp.net-core .net-core asp.net-core-3.1


    【解决方案1】:

    原因有很多,但主要的一个你已经提到了:

    • 访问源代码通常比访问受到严密保护的机密(例如 Azure Vault)容易得多
    • 泄露秘密要容易得多,可能是偶然的(通过日志,或者有人偷看你的肩膀,或者可以访问 CI 服务器的人)
    • 你通常不会知道你已经泄露了它们,因为与适当的保密系统相比,通常没有或少得多的审计
    • 无法限制有权访问特定环境的特定机密的人员
    • 就个人而言,我也不喜欢在我的开发设置附近有专门的生产秘密。如果我以开发人员的身份运行代码,我想 100% 确定我永远不会在生产环境中意外运行(“哎呀,我测试了批量删除功能……与生产环境相比”)。如果刺激的秘密只是不存在,那么就没有错误
    • 可能还有更多原因...

    基本上,限制错误和安全漏洞的表面区域将限制出现问题的机会,即使当前没有可能发生错误或泄漏的因素的合理组合。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 2020-10-14
      相关资源
      最近更新 更多