zoukankan      html  css  js  c++  java
  • 保护 .NET Core 项目的敏感信息

    我们的项目中几乎都会有配置文件,里面可能会存储一些敏感信息,比如数据库连接字符串、第三方 API 的 AppKey 和 SecretKey 等。

    对于开源项目,这些敏感信息肯定不能随着源代码一起提交到托管平台。

    对于网站应用大多都是要部署到有公开 IP 的服务器上的,存有敏感信息的文件放在 Web 目录下也不安全。

    较好的办法是把敏感信息文件存在项目以外的地方。

    在.NET Core 中,我们可以使用 Secret Manager 工具来管理敏感信息,这个工具可以将敏感信息保存在一个 secrets.json 文件中,它不在项目文件夹下,而是存放在另外的地方。对于三种操作系统,它的位置是:

    Windows: %APPDATA%/Microsoft/UserSecrets/<UserSecretsId>/secrets.json
    Linux : ~/.microsoft/usersecrets/<UserSecretsId>/secrets.json
    Mac : ~/.microsoft/usersecrets/<UserSecretsId>/secrets.json

    一个.NET Core 应用对应一个唯一的 UserSecretsId,一般是一个 GUID。

    这也限制了每个开发者都必须有自己的 UserSecrets 文件夹。虽然有些麻烦,但这也有个好处。就是每个开发者可以使用不同于其它开发者的敏感数据进行开发。比如有些公司的数据库为每个开发者创建了独立的数据库访问账号。

    在 VS 中可以很方便地操作 secrets.json。右击项目,选择[Manage User Secrets],如图:

    编辑打开的 secrets.json 文件,把敏感信息填入其中,如:

    {
    "ConnectionString": "server=localhost;database=testdb;uid=root;pwd=123456;"
    }

    保存后,.csproj 文件中会自动生成一个 UserSecretsId:

    如果不用 VS,也可以在此处手动添加 UserSecretsId,然后在项目目录下通过命令来添加或删除配置项,例如:

    dotnet user-secrets set "Foo:ApiKey" "123456"
    dotnet user-secrets remove "Foo:ApiKey"

    如果 secrets.json 和 appsettings.json 有相同的配置项,程序会优先读取前者的值。

    对于 secrets.json 的所有配置项,最好也在 appsettings.json 保留相应的占位,比如:

    {
    "ConnectionString": "<your connection string here>"

    // 其它配置
    }

    这样 appsettings.json 中的占位可以告诉其它开发者有这样一个配置。

    这对于开源项目十分有用。

  • 相关阅读:
    jQuery EasyUI API 中文文档 可调整尺寸
    jQuery EasyUI API 中文文档 链接按钮(LinkButton)
    jQuery EasyUI API 中文文档 手风琴(Accordion)
    jQuery EasyUI API 中文文档 表单(Form)
    jQuery EasyUI API 中文文档 组合(Combo)
    jQuery EasyUI API 中文文档 布局(Layout)
    jQuery EasyUI API 中文文档 拆分按钮(SplitButton)
    jQuery EasyUI API 中文文档 菜单按钮(MenuButton)
    jQuery EasyUI API 中文文档 搜索框
    jQuery EasyUI API 中文文档 验证框(ValidateBox)
  • 原文地址:https://www.cnblogs.com/willick/p/protect-asp-net-core-sensitive-information.html
Copyright © 2011-2022 走看看