Шифрование с помощью приложения 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Шифрование с помощью приложения

Поиск

Замечание! В примерах секция connectionStrings зашифрована с помощью этого метода, файл ключей CustomKeys.xml находится в папке проекта, импортировать его перед запуском проекта будет хорошей идеей.

Замечание! aspnet_regiis не умеет подгружать сборки самостоятельно, поэтому при попытке зашифровать собственную секцию этим способом будет выдано сообщение об ошибке:

Encrypting configuration section...

Ошибка при создании обработчика раздела конфигурации для socialSettings: Невозможно загрузить файл или сборку "Test" или один из зависимых от них компонентов. Не удается найти указанный файл. (C:ProjectsTestTestweb.config line 8)

 

Данная проблема решается по следующему алгоритму:

 

1) Скопировать dll-файл в папку, где находится aspnet_regiis

2) Или добавить сборку в GAC (для этого сборка должна обладать строгим именем — strongly named assemblies):

gacutil –i C:projectsTestTestbinDebugTest.dll

Для шифрования на стороне приложения используем класс WebConfigurationManager.

 

Пример класса для шифрования секции connectionStrings:

 

namespace TsSoft.WebSamples.Helpers

{

using System;

using System.Configuration;

using System.Web.Configuration;

 

public class EncryptHelper

{

   private Configuration config;

   private string pathWebConfig;

 

   public EncryptHelper(string pathWebConfig = "~/")

   {

       this.pathWebConfig = pathWebConfig;

       config = WebConfigurationManager.OpenWebConfiguration(pathWebConfig);

   }

 

   public string PathWebConfig

   {

       get

       {

           return pathWebConfig;

       }

       set

       {

           pathWebConfig = value;

           config = WebConfigurationManager.OpenWebConfiguration(pathWebConfig);

       }

   }

 

   public void Encrypt(string encryptSection, string providerName = "RsaProtectedConfigurationProvider")

   {

       var section = GetSection(encryptSection);

       if (section.SectionInformation.IsProtected == true)

       {

           throw new Exception("Section " + encryptSection + " already encrypted.");

       }

       section.SectionInformation.ProtectSection(providerName);

       config.Save();

   }

 

   public void Decrypt(string decryptSection)

   {

       var section = GetSection(decryptSection);

       if (section.SectionInformation.IsProtected == false)

       {

           throw new Exception("Section " + decryptSection + " already decrypted.");

       }

       section.SectionInformation.UnprotectSection();

       config.Save();

   }

 

   private ConfigurationSection GetSection(string sectionName)

   {

       if (string.IsNullOrWhiteSpace(sectionName))

       {

           throw new Exception("Section name is null");

       }

       var section = config.GetSection(sectionName);

       if (section == null)

       {

           throw new Exception("Section " + sectionName + " is not defined. Check your Web.config");

       }

       if (section.ElementInformation.IsLocked)

       {

           throw new Exception("Section " + sectionName + " is locked.");

       }

       return section;

   }

}

}

Использование:

 

var encryptHelper = new EncryptHelper();

encryptHelper.Encrypt("connectionStrings");

encryptHelper.Decrypt("connectionStrings");

 

ЗАДАНИЕ:

1) Осуществить изучение материала.

2) Ответить на следующие вопросы (письменно):

a) Для чего необходимо производить шифрование Web.config.

b) Перечислить основные контейнеры используемые при шифровании.

c) В каких случаях шифрование не целесообразно.

Источники:

1) [Электронный ресурс]: Метанит, режим доступа: https://metanit.com/

2) [Электронный ресурс]: Docs.microsoft, режим доступа: https://docs.microsoft.com/ru-ru/xamarin/get-started/what-is-xamarin

3) [Электронный ресурс]: TS SOFT, режим доступа: http://ts-soft.ru/blog/



Поделиться:


Последнее изменение этой страницы: 2024-06-17; просмотров: 51; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.198 (0.005 с.)