Общие сведения о защищенной конфигурации
Обновлен: Ноябрь 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 расшифровывает строку подключения и делает ее доступной приложению.
Примечание. |
---|
Нельзя использовать защищенную конфигурацию для шифрования раздела 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 на веб-узле поддержки корпорации Майкрософт. |
Примечание о безопасности. |
---|
Зашифрованная конфигурационная информация расшифровывается при загрузке в память, используемую приложением. Если кто-то получил несанкционированный доступ к памяти приложения, то он также может получить и доступ к конфиденциальной информации из раздела защищенной конфигурации. |
Работа с защищенной конфигурацией
Защищенная конфигурация управляется с помощью средства регистрации IIS ASP.NET (Aspnet_regiis.exe) или с помощью классов защищенной конфигурации в пространстве имен System.Configuration.
Средство Aspnet_regiis.exe (расположенное в папке %Корневая_папка_системы%\Microsoft.NET\Framework\Номер_версии) имеет параметры для шифрования и расшифровки разделов файла Web.config, для создания или удаления контейнеров ключей, для экспорта и импорта сведений контейнеров ключей и для управления доступом к контейнерам ключей.
Шифрование и расшифровка содержимого файла Web.config выполняется с помощью класса ProtectedConfigurationProvider. Ниже перечислены поставщики защищенной конфигурации, включенные в платформу .NET Framework:
DpapiProtectedConfigurationProvider. Использует API защиты данных Windows (DPAPI) для шифрования и расшифровки данных.
RsaProtectedConfigurationProvider. Использует алгоритм шифрования RSA для шифрования и расшифровки данных.
Оба поставщика предлагают строгое шифрование данных, однако если планируется использовать один зашифрованный файл конфигурации на нескольких серверах, например в веб-фермах, то только RsaProtectedConfigurationProvider позволяет экспортировать ключи шифрования и импортировать их на другом сервере.
Можно указать, какой ProtectedConfigurationProvider должен использоваться, настроив его в файле Web.config приложения, или воспользоваться одним из экземпляров поставщика ProtectedConfigurationProvider, настроенных в файле Machine.config. Дополнительные сведения см. в разделе Указание поставщика защищенной конфигурации.
После указания поставщика можно выполнять шифрование или расшифровку содержимого файла Web.config для используемого приложения ASP.NET. Дополнительные сведения см. в разделе Шифрование и расшифровка разделов конфигурации.
Примечание. |
---|
Для лучшей защиты веб-приложений важно постоянно устанавливать на сервере приложения последние обновления средств защиты для Microsoft Windows и IIS, а также все обновления средств защиты для Microsoft SQL Server или других источников данных членства. Более подробные советы и рекомендации по написанию безопасного кода и защите приложений приведены в книге "Защищенный код" Майкла Ховарда и Дэвида Леблана, а также на веб-узле Шаблоны и методики Майкрософт. |
См. также
Задачи
Пошаговое руководство. Шифрование информации конфигурации с помощью функции защищенной конфигурации
Другие ресурсы
Шифрование сведений о конфигурации с помощью функции защищенной конфигурации