Asp.net 你能以编程方式设置MachineKey吗?

Asp.net 你能以编程方式设置MachineKey吗?,asp.net,web-config,Asp.net,Web Config,在ASP.NET中,能否以编程方式设置machineKey设置 我们使用的web应用程序将加密的敏感信息存储在数据库中,因此如果我们可以将解密密钥放在那里,它将非常方便。否;必须通过配置设置machineKey元素。但是,web.config本身可以进行加密,这有助于在攻击者访问配置文件时将加密密钥泄露的风险降至最低。(同样的过程也可用于保护SQL连接字符串和几乎任何其他您希望的敏感配置元素。)有关启用此功能的演练,请参阅。是的,您可以。我在ConsoleApplication中成功地使用了以下

在ASP.NET中,能否以编程方式设置
machineKey
设置


我们使用的web应用程序将加密的敏感信息存储在数据库中,因此如果我们可以将解密密钥放在那里,它将非常方便。

否;必须通过配置设置machineKey元素。但是,web.config本身可以进行加密,这有助于在攻击者访问配置文件时将加密密钥泄露的风险降至最低。(同样的过程也可用于保护SQL连接字符串和几乎任何其他您希望的敏感配置元素。)有关启用此功能的演练,请参阅。

是的,您可以。我在ConsoleApplication中成功地使用了以下代码:

private static void ChangeWebConfig(string validationKey, string decryptionKey, string webConfigPath)
{
    ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap();
    configFileMap.ExeConfigFilename = webConfigPath;
    System.Configuration.Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);
    MachineKeySection section = (MachineKeySection)config.GetSection("system.web/machineKey");
    section.ValidationKey = validationKey;
    section.DecryptionKey = decryptionKey;
    config.Save();
}

在应用程序启动之前,是否无法在代码中修改web.config?与在所有服务器上都必须有一个加密的配置文件相比,在一个环境变量中使用它会更好、更具动态性。看看我的答案。