app.config中的ConnectionStrings。安全性怎么样?

时间:2010-07-08 13:57:04

标签: .net connection-string app-config

在app.config文件中放置带密码的连接字符串真是件好事吗?

在我看来,app.config没有以任何方式加密,并且可以轻松读取密码信息。

我有一个应用程序访问数据库,而目标最终用户没有进行身份验证。使用组用户/密码。仅当当前Windows用户位于Active Directory组中时,才会启动该应用程序。因此,一旦进入应用程序,用户就可以使用组用户连接到数据库。

处理此类连接字符串的正确方法是什么?在源代码中隐藏它们吗?

注意这适用于独立应用 - 而不是ASP,IIS等

这对我有用

(感谢Jon Galloway - http://weblogs.asp.net/jgalloway/archive/2008/04/13/encrypting-passwords-in-a-net-app-config-file.aspx

private void EncryptConfigSection()
{
    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    ConfigurationSection section = config.AppSettings;
    if (section != null)
    {
        if (!section.SectionInformation.IsProtected)
        {
            if (!section.ElementInformation.IsLocked)
            {
                section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
                section.SectionInformation.ForceSave = true;
                config.Save(ConfigurationSaveMode.Full);
            }
        }
    }
}

这可以通过在应用程序第一次运行时加密exe配置文件来实现。我没有找到一种方法在安装过程中执行此操作,因此配置文件完全可读,直到第一次启动应用程序。也许有人有想法......

3 个答案:

答案 0 :(得分:6)

您可以加密app.config或web.config文件的各个部分,有关详细信息,请参阅for example this post

具体来说,this MSDN article介绍了保护连接字符串的各种方法。

答案 1 :(得分:2)

您应该使用集成身份验证,并在SQL上对AppPool用户进行身份验证,以及他需要执行的操作。

使用它,您不需要在配置中提供密码,并且连接使用app pool用户对sql server进行身份验证。

因此,您拥有最高的安全性。

答案 2 :(得分:0)

此外,您运行的是哪个版本的IIS?这是共享主机吗?或者您是否具有IIS的管理员权限?如果是这样,请在IIS管理器中查看IIS ASP.NET设置。您可以指定ConnectionStrings。