Автоматизация бизнеса

Пользовательский поиск

вторник, 10 апреля 2012 г.

Шифрование строки подключения в C# (DAPI)

     Ниже приведен пример, который показывает один из вариантов защитить строку подключения в своем конфигурационном файле. При этом необходимо воспользоваться Data Protection API (DAPI). DAPI является частью операционной системы который включен начиная с Windows 2000. 

     Допустим, нам необходимо зашифровать данные, хранящиеся в секции connectionStrings. Для этого мы воспользуемся классом DataProtectionConfigurationProvider, также надо добавить новую запись в секцию с именем connection. Следующим шагом подключим к нашему проекту сборку System.Configuration.dll и в коде добавим пространства имен System.Configuration для работы со секциями.


     Добавим метод который возвращает строку которую в дальнейшем можно использовать для подключения к базе или использовать для своих целей смотря как поставлена задача.


public string GetApplicationPath()
        {
            string constring="";
            try
            {
                Configuration config = ConfigurationManager.OpenExeConfiguration(
                                     System.Reflection.Assembly.GetExecutingAssembly().Location);
                ConnectionStringsSection section =
                                                        config.GetSection("connectionStrings") as ConnectionStringsSection;

                 if (!section.SectionInformation.IsProtected)
                {

          // выполняем шифрование секции

                    section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
                    config.Save();
                }
                constring = Properties.Settings.Default.connection;
         // получаем строку подключения из зашифрованной секции

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
         
            return constring;
        }



     При первом обращении к методу секция шифруется и сохраняется в шифрованном виде, после программа будет работать уже с защищенной секцией. В этом можно убедиться если открыть config файл перед обращением и после.






ПРЕДУПРЕЖДЕНИЕ
Процедуру шифрования данных необходимо вызывать на компьютере конечного пользователя поскольку данные хранящиеся в секции могут быть расшифрованы только на том компьютере, на котором были зашифрованы.


При установке приложения мы помещаем в папку с программой ещё не зашифрованный config файл. Рекомендуется так же вызывать процедуру шифрования во время установки приложения. 

1 комментарий: