Общие сведения о защищенной конфигурации

Visual Studio 2010

Обновлен: Ноябрь 2007

Защищенную конфигурацию можно использовать для шифрования конфиденциальной информации, включая имена и пароли пользователей, строки подключения к базам данных и ключи шифрования, в файле конфигурации веб-приложения Web.config. Шифрование конфигурационной информации может улучшить защиту приложения, затрудняя несанкционированный доступ, даже если атакующий получает доступ к файлу конфигурации.

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

<configuration>
  <connectionStrings>
    <add name="SampleSqlServer" connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;" />
   </connectionStrings>
</configuration>

Файл конфигурации, в котором значения строк подключения зашифрованы с помощью защищенной конфигурации, не показывает строки подключения открытым текстом, а хранит их в зашифрованной форме, как показано в следующем примере:

<configuration>

  <connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
    <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
      xmlns="http://www.w3.org/2001/04/xmlenc#">
      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
        <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
          <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
          <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
            <KeyName>RSA Key</KeyName>
          </KeyInfo>
          <CipherData>
            <CipherValue>RXO/zmmy3sR0iOJoF4ooxkFxwelVYpT0riwP2mYpR3FU+r6BPfvsqb384pohivkyNY7Dm4lPgR2bE9F7k6TblLVJFvnQu7p7d/yjnhzgHwWKMqb0M0t0Y8DOwogkDDXFxs1UxIhtknc+2a7UGtGh6Di3N572qxdfmGfQc7ZbwNE=
            </CipherValue>
          </CipherData>
        </EncryptedKey>
      </KeyInfo>
      <CipherData>
        <CipherValue>KMNKBuV9nOid8pUvdNLY5I8R7BaEGncjkwYgshW8ClKjrXSM7zeIRmAy/cTaniu8Rfk92KVkEK83+UlQd+GQ6pycO3eM8DTM5kCyLcEiJa5XUAQv4KITBNBN6fBXsWrGuEyUDWZYm6Eijl8DqRDb11i+StkBLlHPyyhbnCAsXdz5CaqVuG0obEy2xmnGQ6G3Mzr74j4ifxnyvRq7levA2sBR4lhE5M80Cd5yKEJktcPWZYM99TmyO3KYjtmRW/Ws/XO3z9z1b1KohE5Ok/YX1YV0+Uk4/yuZo0Bjk+rErG505YMfRVtxSJ4ee418ZMfp4vOaqzKrSkHPie3zIR7SuVUeYPFZbcV65BKCUlT4EtPLgi8CHu8bMBQkdWxOnQEIBeY+TerAee/SiBCrA8M/n9bpLlRJkUb+URiGLoaj+XHym//fmCclAcveKlba6vKrcbqhEjsnY2F522yaTHcc1+wXUWqif7rSIPhc0+MT1hB1SZjd8dmPgtZUyzcL51DoChy+hZ4vLzE=
        </CipherValue>
      </CipherData>
    </EncryptedData>
  </connectionStrings>

При запросе страницы платформа .NET Framework расшифровывает строку подключения и делает ее доступной приложению.

hh8x3tas.alert_note(ru-ru,VS.100).gifПримечание.

Нельзя использовать защищенную конфигурацию для шифрования раздела configProtectedData файла конфигурации. Также нельзя использовать защищенную конфигурацию для шифрования разделов, которые не применяют обработчик раздела, и разделов, которые являются частью управляемой конфигурации шифрования. Разделы, которые не могут быть зашифрованы с помощью защищенной конфигурации: processModel, runtime, mscorlib, startup, system.runtime.remoting, configProtectedData, satelliteassemblies, cryptographySettings, cryptoNameMapping и cryptoClasses. Для защиты конфиденциальной информации в этих разделах конфигурации рекомендуется использовать другие средства шифрования, например консольное приложение для установки значений реестра ASP.NET (Aspnet_setreg.exe). Сведения о консольном приложении для установки значений реестра ASP.NET (Aspnet_setreg.exe) см. в статье базы знаний "Использование служебной программы ASP.NET для шифрования учетных данных и строк подключения" с номером Q329290 на веб-узле поддержки корпорации Майкрософт.

hh8x3tas.alert_security(ru-ru,VS.100).gifПримечание о безопасности.

Зашифрованная конфигурационная информация расшифровывается при загрузке в память, используемую приложением. Если кто-то получил несанкционированный доступ к памяти приложения, то он также может получить и доступ к конфиденциальной информации из раздела защищенной конфигурации.

Защищенная конфигурация управляется с помощью средства регистрации IIS ASP.NET (Aspnet_regiis.exe) или с помощью классов защищенной конфигурации в пространстве имен System.Configuration.

Средство Aspnet_regiis.exe (расположенное в папке %Корневая_папка_системы%\Microsoft.NET\Framework\Номер_версии) имеет параметры для шифрования и расшифровки разделов файла Web.config, для создания или удаления контейнеров ключей, для экспорта и импорта сведений контейнеров ключей и для управления доступом к контейнерам ключей.

Шифрование и расшифровка содержимого файла Web.config выполняется с помощью класса ProtectedConfigurationProvider. Ниже перечислены поставщики защищенной конфигурации, включенные в платформу .NET Framework:

Оба поставщика предлагают строгое шифрование данных, однако если планируется использовать один зашифрованный файл конфигурации на нескольких серверах, например в веб-фермах, то только RsaProtectedConfigurationProvider позволяет экспортировать ключи шифрования и импортировать их на другом сервере.

Можно указать, какой ProtectedConfigurationProvider должен использоваться, настроив его в файле Web.config приложения, или воспользоваться одним из экземпляров поставщика ProtectedConfigurationProvider, настроенных в файле Machine.config. Дополнительные сведения см. в разделе Указание поставщика защищенной конфигурации.

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

hh8x3tas.alert_note(ru-ru,VS.100).gifПримечание.

Для лучшей защиты веб-приложений важно постоянно устанавливать на сервере приложения последние обновления средств защиты для Microsoft Windows и IIS, а также все обновления средств защиты для Microsoft SQL Server или других источников данных членства. Более подробные советы и рекомендации по написанию безопасного кода и защите приложений приведены в книге "Защищенный код" Майкла Ховарда и Дэвида Леблана, а также на веб-узле Шаблоны и методики Майкрософт.

Показ: