代码之家  ›  专栏  ›  技术社区  ›  paul

app.config中的连接字符串。安全怎么办?

  •  1
  • paul  · 技术社区  · 14 年前

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

    在我看来,app.config没有以任何方式加密,密码信息很容易读取。

    我有一个应用程序,它可以访问一个预期的最终用户没有身份验证的数据库。使用组用户/密码。仅当当前windows用户在Active Directory组中时,应用程序才会启动。因此,一旦进入应用程序,用户就可以使用组用户连接到数据库。

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

    注意 这是一个独立的应用程序-不是ASP,IIS等

    这对我有用

    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 回复  |  直到 14 年前
        1
  •  7
  •   Håvard S    14 年前

    for example this post 更多信息。

    明确地, this MSDN article 介绍保护连接字符串的各种方法。

        2
  •  3
  •   cRichter    14 年前

    您应该使用集成身份验证,并让AppPool用户在SQL上使用他需要执行的内容进行身份验证。

    所以你有最高的安全感。

        3
  •  0
  •   Kris Krause    14 年前

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