Защита на низ за връзка в Asp.net MVC

Имам Asp.net MVC приложение с VS.Net2013 в моя webconfige файл, имам раздел за низ за свързване като този:

 <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")


person Shahram    schedule 28.09.2014    source източник
comment
опитайте това Integrated Security=True вместо това user id=general;password=Abc123456   -  person Khurram Ali    schedule 28.09.2014


Отговори (1)


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

Кодът е взет от този сайт, можете да намерите повече информация там.

person dotnetom    schedule 28.09.2014
comment
имам друг въпрос Request.ApplicationPath не работи за мен - person Shahram; 28.09.2014
comment
Ако заявката не е в обхвата на заявката, вероятно трябва да използвате "/" вместо Request.ApplicationPath - person dotnetom; 28.09.2014
comment
Има автоматични криптирания тук и тук - person roland; 15.03.2016