Compartir a través de


Consideraciones de seguridad con metadatos

Al usar las características de metadatos en Windows Communication Foundation (WCF), tenga en cuenta las implicaciones de seguridad de la publicación, recuperación y uso de metadatos de servicio.

Cuándo publicar metadatos

Los servicios WCF no publican metadatos de forma predeterminada. Para publicar metadatos para un servicio WCF, debe habilitar explícitamente la publicación de metadatos agregando puntos de conexión de metadatos al servicio (consulte Metadatos de publicación). Dejar deshabilitada la publicación de metadatos reduce la superficie expuesta a ataques para el servicio y reduce el riesgo de divulgación involuntaria de información. No todos los servicios deben publicar metadatos. Si no tiene que publicar metadatos, considere la posibilidad de dejarla desactivada. Tenga en cuenta que todavía puede generar metadatos y código de cliente directamente desde los ensamblados de servicio mediante la Herramienta de utilidad de metadatos de ServiceModel (Svcutil.exe). Para obtener más información sobre el uso de Svcutil.exe para exportar metadatos, consulte How to: Use Svcutil.exe to Export Metadata from Compiled Service Code.

Publicación de metadatos mediante una vinculación segura

Los enlaces de metadatos predeterminados que proporciona WCF no son seguros y permiten el acceso anónimo a los metadatos. Los metadatos del servicio que publica un servicio WCF contienen una descripción detallada sobre el servicio y pueden contener información confidencial intencionada o involuntaria. Por ejemplo, los metadatos del servicio pueden contener información sobre las operaciones de infraestructura que no tenían la intención de difundirse públicamente. Para proteger los metadatos del servicio contra el acceso no autorizado, puede usar un enlace seguro para el punto de conexión de metadatos. Los puntos de conexión de metadatos responden a solicitudes HTTP/GET que pueden usar el Protocolo de Capa de Conexión Segura (SSL) para proteger los metadatos. Para obtener más información, vea Cómo: Proteger puntos de conexión de metadatos.

La protección de los puntos de conexión de metadatos también proporciona una manera de que los solicitantes recuperen de forma segura los metadatos del servicio sin el riesgo de alteración o suplantación de identidad.

Usar solo metadatos de confianza

Puede usar metadatos de servicio para construir automáticamente los componentes en tiempo de ejecución necesarios para llamar al servicio. También puede usar metadatos en tiempo de diseño para desarrollar una aplicación cliente o en tiempo de ejecución para actualizar dinámicamente el enlace que un cliente usa para llamar a un servicio.

Los metadatos del servicio se pueden alterar o suplantar cuando se recuperan de forma no segura. Los metadatos alterados pueden redirigir al cliente a un servicio malintencionado, contener configuraciones de seguridad comprometidas o contener estructuras XML malintencionadas. Los documentos de metadatos pueden ser grandes y se guardan con frecuencia en el sistema de archivos. Para protegerse contra la manipulación y la suplantación de identidad, use un enlace seguro para solicitar metadatos de servicio cuando uno esté disponible.

Uso de técnicas seguras para procesar metadatos

Los metadatos del servicio se recuperan con frecuencia de un servicio a través de una red mediante protocolos estandarizados como WS-MetadataExchange (MEX). Muchos formatos de metadatos incluyen mecanismos de referencia para apuntar a metadatos adicionales. El tipo MetadataExchangeClient procesa automáticamente las referencias a documentos del lenguaje de descripción de servicios Web (WSDL), el esquema XML y documentos MEX. El tamaño del MetadataSet objeto creado a partir de los metadatos recuperados es directamente proporcional al MaximumResolvedReferences valor de la MetadataExchangeClient instancia que se usa y el MaxReceivedMessageSize valor del enlace que usa esa MetadataExchangeClient instancia. Establezca estas cuotas en los valores adecuados según lo dictado por su escenario.

En WCF, los metadatos del servicio se procesan como XML. Al procesar documentos XML, las aplicaciones deben protegerse contra estructuras XML malintencionadas. Utilice el XmlDictionaryReader con las cuotas adecuadas al procesar XML y también establezca la propiedad DtdProcessing a Prohibit.

El sistema de metadatos de WCF es extensible y las extensiones de metadatos se pueden registrar en el archivo de configuración de la aplicación (vea Extender el sistema de metadatos). Las extensiones de metadatos pueden ejecutar código arbitrario, por lo que debe proteger el archivo de configuración de la aplicación con las listas de control de acceso adecuadas (ACL) y registrar solo implementaciones de extensión de metadatos de confianza.

Validación de clientes generados

Al generar código de cliente a partir de metadatos recuperados de un origen que no es de confianza, valide el código de cliente generado para asegurarse de que el cliente generado se ajusta a las directivas de seguridad de las aplicaciones cliente. Puede usar un comportamiento de validación para comprobar la configuración en el enlace de cliente o inspeccionar visualmente el código generado por herramientas. Para obtener un ejemplo de cómo implementar un cliente que valida comportamientos, consulte Validación de cliente.

Protección de archivos de configuración de aplicaciones

El archivo de configuración de la aplicación de un servicio puede controlar cómo y si se publican los metadatos. Es recomendable proteger el archivo de configuración de la aplicación con las listas de control de acceso (ACL) adecuadas para asegurarse de que un atacante no puede modificar dicha configuración.

Consulte también