Aspnet_regiis会加密存储在外部配置文件中的连接字符串信息吗?

时间:2013-10-22 17:42:27

标签: c# asp.net security encryption connection-string

现在我们需要一个安全的地方来放置我们的连接字符串。我们希望将这些连接字符串放在与Web.config分开的外部文件中,以简化部署,但我们还希望对内部信息进行加密以确保安全。

有没有办法使用Aspnet_regiis工具完成此操作?我理解如何使用它来加密Web.config文件中的部分,我们喜欢用这种方法加密意味着在使用网站时自动解密。但我在这个问题上找到的信息似乎有些矛盾。

Encrypt custom config section in ASP.NET using aspnet_regiis 这个到另一个问题的链接似乎表明我所要做的就是像正常一样设置外部配置文件,将敏感连接字符串信息放在其中,并正常运行Aspnet_regiis工具,外部文件将被加密。 / p>

http://www.velocityreviews.com/forums/t722875-encrypting-external-config-section.html 但是,该链接中的响应表明Aspnet_regiis不能用于加密外部部分。

所以可以这样做,如果没有,那么以编程方式完成这一切是唯一的方法吗?

2 个答案:

答案 0 :(得分:2)

我自己试过这个,我可以确认Aspnet_regiis工具确实会加密存储在外部配置文件中的连接字符串。在Web.config文件中,我使用" configSource"来引用外部定义的连接字符串。属性,并在运行该工具后加密。

答案 1 :(得分:0)

您可以使用C#

加密连接字符串
ExeConfigurationFileMap configMap = new ExeConfigurationFileMap();
                configMap.ExeConfigFilename = modulePath + "Web.Release.config";
                System.Configuration.Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
                System.Configuration.ConfigurationSection section = config.GetSection("connectionStrings");
                if (!section.SectionInformation.IsProtected)
                {
                                   section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");
                    config.Save();
                }