在Asp.net MVC中保护连接字符串

时间:2014-09-28 07:23:41

标签: c# asp.net-mvc security asp.net-mvc-4 web-config

我的webconfige文件中有一个Asp.net MVC应用程序VS.Net2013我有连接字符串这样的部分:

 <connectionStrings>
    <add name="ConnectStrNL" connectionString="server=192.168.0.71\ins1;database=FNHProvider;MultipleActiveResultSets=true;persist  security info=True;User ID=general;Password=123;" />
    <add name="connectionStringGeneral" connectionString="server=192.168.0.254;database=NFS;MultipleActiveResultSets=true;persist security info=True;User ID=General;Password=*******;" />
</connectionStrings>

我想隐藏用户和每个人的数据库传递。我也有限制不使用这种方法(aspnet_regiis.exe -site&#34; EncryptDemo&#34; -app&#34; /&#34; -pe&#34; connectionStrings&#34;)

1 个答案:

答案 0 :(得分:3)

如果您不希望密码出现在配置文件中,您可以执行以下两项基本操作:

  1. 使用Windows身份验证。这应该始终是您首选的方法,除非有一些原因导致您无法使用Windows身份验证并且您被迫使用SQL身份验证

  2. 加密连接字符串。由于您无法使用问题中提到的aspnet_regiis_exe,因此可以从代码中加密该部分。以下代码应在应用程序开始时运行一次:

    using System.Web.Configuration;
    using System.Web.Security;
    using System.Configuration;
    
    public void EncryptConnString()
    {
        Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
        ConfigurationSection section = config.GetSection("connectionStrings");
        if (!section.SectionInformation.IsProtected)
        {
            section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");
            config.Save();
        }
    }
    
  3. 代码取自this site,您可以在那里找到更多信息。