You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ASP.NET Core 7.0中加密ConnectionStrings配置节?

ASP.NET Core 7.0 加密ConnectionStrings配置节的正确方法

你之前用到的SectionInformation、ProtectSection是.NET Framework时代的API,ASP.NET Core的配置系统已经重构,不再支持这些方法。以下是适配ASP.NET Core 7.0的解决方案:

开发环境:优先使用Secret Manager

Secret Manager是官方推荐的开发环境敏感配置管理工具,不会将敏感信息提交到代码仓库,比直接加密配置文件更简便安全。

  1. 初始化Secret Manager
    在项目根目录执行命令:
dotnet user-secrets init

执行后项目文件会自动添加UserSecretsId,关联当前项目到本地Secret存储。

  1. 将ConnectionStrings存入Secret Manager
    执行命令替换实际的连接字符串:
dotnet user-secrets set "ConnectionStrings:Database one" "<Host...;Username=...;Password=...;etc.>"
  1. 清理配置文件中的敏感值
    修改appsettings.Development.json,可保留空键或直接删除敏感值(Secret Manager的配置优先级会覆盖文件内容):
"ConnectionStrings": {
    "Database one": ""
}

生产环境:环境变量或密钥管理服务

环境变量

在生产服务器上通过环境变量注入敏感配置,ASP.NET Core会自动读取:

  • Windows系统(命令行):
setx ConnectionStrings__Database one "<Host...;Username=...;Password=...;etc.>"

注意:配置键中的冒号:需替换为双下划线__,符合环境变量命名规范。

  • Linux/macOS系统(终端):
export ConnectionStrings__Database\ one="<Host...;Username=...;Password=...;etc.>"

空格需转义,或用引号包裹完整键名。

云密钥管理服务(如Azure Key Vault)

如果是云部署,推荐使用Azure Key Vault这类托管服务存储连接字符串,通过配置项目访问权限,ASP.NET Core会自动从Vault中读取敏感配置,无需手动加密。

若需直接加密配置文件(不推荐)

如果必须对appsettings.json本身加密,可自定义加密逻辑实现:

  1. 编写加密/解密工具类
using System.Security.Cryptography;
using System.Text;

public static class ConfigCrypto
{
    // 加密字符串(需自行管理密钥和向量,建议通过环境变量注入)
    public static string Encrypt(string plainText, byte[] key, byte[] iv)
    {
        using var aes = Aes.Create();
        aes.Key = key;
        aes.IV = iv;

        var encryptor = aes.CreateEncryptor(aes.Key, aes.IV);
        using var ms = new MemoryStream();
        using var cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write);
        using var sw = new StreamWriter(cs);
        sw.Write(plainText);
        return Convert.ToBase64String(ms.ToArray());
    }

    // 解密字符串
    public static string Decrypt(string cipherText, byte[] key, byte[] iv)
    {
        using var aes = Aes.Create();
        aes.Key = key;
        aes.IV = iv;

        var decryptor = aes.CreateDecryptor(aes.Key, aes.IV);
        using var ms = new MemoryStream(Convert.FromBase64String(cipherText));
        using var cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read);
        using var sr = new StreamReader(cs);
        return sr.ReadToEnd();
    }
}
  1. 自定义配置提供程序
    继承ConfigurationProvider,在加载配置时自动解密指定节的值。这种方式需要自行维护密钥安全,风险较高,仅在特殊场景下使用。

内容的提问来源于stack exchange,提问作者HasQuestionsAndAnswers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 15:35:12