Implementar un proveedor de configuración protegida

Actualización: noviembre 2007

La configuración protegida permite cifrar secciones del archivo Web.config de una aplicación ASP.NET para proteger información confidencial utilizada por la aplicación. Esto permite mejorar la seguridad de la aplicación dificultando a un atacante el acceso a la información confidencial aunque este logre el acceso al archivo Web.config. ASP.NET incluye dos proveedores de configuración protegida que se pueden utilizar para cifrar secciones de un archivo Web.config: RsaProtectedConfigurationProvider, que utiliza RSACryptoServiceProvider para cifrar secciones de configuración y DpapiProtectedConfigurationProvider, que utiliza la API de protección de datos (DPAPI) de Windows para cifrar secciones de configuración.

En algunos casos, puede ser necesario cifrar información utilizando un algoritmo diferente de los disponibles con los proveedores de RSA o DPAPI. En ese caso, se puede generar un proveedor de configuración protegida personalizado para ser utilizado por ASP.NET.

Clases necesarias para los proveedores de configuración protegida

Para implementar un proveedor de configuración protegida se debe crear una clase que herede la clase abstracta ProtectedConfigurationProvider del espacio de nombres System.Configuration. La clase abstracta ProtectedConfigurationProvider hereda la clase abstracta ProviderBase del espacio de nombres System.Configuration.Provider, por lo que se deben implementar también los miembros necesarios de la clase ProviderBase. En las tablas siguientes se enumeran las propiedades y los métodos que se deben implementar de las clases abstractas ProviderBase y ProtectedConfigurationProvider. Para consultar una implementación de cada miembro, vea Cómo: Generar y ejecutar el ejemplo de proveedor de configuración protegida.

Miembros de ProviderBase necesarios

Miembro

Descripción

Método Initialize

Establece los valores de propiedad para la instancia del proveedor, incluidos los valores específicos de la implementación y las opciones proporcionadas en la configuración de la aplicación.

Obtiene como entrada el nombre del proveedor y una clase NameValueCollection de las opciones de configuración.

Miembros de ProtectedConfigurationProvider necesarios

Miembro

Descripción

Encrypt (método)

Realiza el cifrado. Toma como entrada un objeto XmlNode que contiene la sección de configuración que se va a cifrar. Por ejemplo, si la sección de configuración que se va a cifrar es la sección connectionStrings, el objeto XmlNode representa datos XML similares a los del ejemplo siguiente.

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

El método Encrypt cifra el valor de OuterXml del objeto XmlNode y devuelve un objeto XmlNode en el que un elemento EncryptedData es el elemento raíz, como se muestra en el ejemplo siguiente:

<EncryptedData>
  <!-- encrypted contents -->
</EncryptedData>

El formato del contenido del elemento EncryptedData está determinado por la implementación. Cuando se descifra el elemento, ASP.NET pasa un objeto XmlNode al método Decrypt, donde el elemento EncryptedData es el elemento raíz.

Decrypt (método)

Realiza el descifrado. Toma como entrada un objeto XmlNode que contiene el elemento EncryptedData de una sección de configuración cifrada. Por ejemplo, si la sección de configuración que se va a cifrar es la sección connectionStrings, el objeto XmlNode representa datos XML similares a los datos XML resaltados en el ejemplo siguiente.

<connectionStrings configProtectionProvider="CustomProvider">
  <EncryptedData>    <!-- encrypted contents -->  </EncryptedData>
</connectionStrings>

El método Decrypt descifra el contenido del objeto XmlNode y devuelve un objeto XmlNode que representa el contenido descifrado del objeto EncryptedDataXmlNode. Por ejemplo, si la sección connectionStrings se cifra, el método Decrypt devuelve un objeto XmlNode con datos XML similares a los del ejemplo siguiente.

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

Proveedor de ejemplo

Para obtener un ejemplo de proveedor de configuración protegida personalizado que utiliza la clase TripleDESCryptoServiceProvider para cifrar y descifrar secciones de un archivo Web.config, vea Cómo: Generar y ejecutar el ejemplo de proveedor de configuración protegida.

Vea también

Tareas

Cómo: Generar y ejecutar el ejemplo de proveedor de configuración protegida

Otros recursos

Cifrar información de configuración mediante una configuración protegida