2014-09-28 108 views
1

我有一个Asp.net MVC应用程序使用VS.Net2013在我webconfige文件我都连接字符串条是这样的:保护连接字符串中Asp.net MVC

<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“EncryptDemo”-app“/”-pe“connectionStrings”)

+0

尝试此集成安全= True而不是此用户id = general; password = abc123456“ – 2014-09-28 07:33:32

回答

3

如果你不想要你的话,你可以做2件基本的事情密码在配置文件中:

  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(); 
        } 
    } 
    

的代码this site拍摄,你可以在那里找到更多信息。

+0

我有另一个问题Request.ApplicationPath不起作用对于我 – Shahram 2014-09-28 09:02:41

+0

如果请求不在请求的范围内,使用'“/”'而不是'Request.ApplicationPath' – dotnetom 2014-09-28 09:13:49

+0

Thankyou。它的工作原理 – Shahram 2014-09-28 09:39:54