Защита строки подключения в 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 вместо этого идентификатора пользователя=general;password=Abc123456   -  person Khurram Ali    schedule 28.09.2014


Ответы (1)


Есть две основные вещи, которые вы можете сделать, если не хотите, чтобы ваш пароль был в файле конфигурации:

  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