Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Espacio de nombres System.Xml

 

Publicado: mayo de 2016

El espacio de nombres System.Xml proporciona compatibilidad basada en estándares para procesar XML.

ClaseDescripción
System_CAPS_pubclassNameTable

Implementa un único subproceso XmlNameTable.

System_CAPS_pubclassUniqueId

Un identificador único optimizado para Guids.

System_CAPS_pubclassXmlAttribute

Representa un atributo. Los valores válidos y predeterminados del atributo se definen en una definición de tipo de documento (DTD) o un esquema.

System_CAPS_pubclassXmlAttributeCollection

Representa una colección de atributos a los que se puede acceder por nombre o índice.

System_CAPS_pubclassXmlBinaryReaderSession

Permite administrar las cadenas optimizadas de una manera dinámica.

System_CAPS_pubclassXmlBinaryWriterSession

Permite el uso de un diccionario dinámico para comprimir cadenas comunes que aparecen en un mensaje y mantener el estado.

System_CAPS_pubclassXmlCDataSection

Representa una sección CDATA.

System_CAPS_pubclassXmlCharacterData

Proporciona métodos de manipulación de texto que usan varias clases.

System_CAPS_pubclassXmlComment

Representa el contenido de un comentario XML.

System_CAPS_pubclassXmlConvert

Codifica y descodifica nombres XML y proporciona métodos de conversión entre tipos de Common Language Runtime y tipos de lenguajes de definición de esquema XML (XSD). Cuando se convierten tipos de datos, los valores devueltos no dependen de la configuración regional.

System_CAPS_pubclassXmlDataDocument

Obsoleto. Permite que los datos estructurados se almacenan, recuperar y manipular a través de un operador relacional DataSet.

System_CAPS_pubclassXmlDeclaration

Representa el nodo de la declaración XML <?xml version='1.0'...?>.

System_CAPS_pubclassXmlDictionary

Implementa un diccionario utilizado para optimizar Windows Communication Foundation (WCF)'implementaciones de lector/sistema de escritura XML.

System_CAPS_pubclassXmlDictionaryReader

Un abstract de clase que el Windows Communication Foundation (WCF) se deriva de XmlReader para la serialización y deserialización.

System_CAPS_pubclassXmlDictionaryReaderQuotas

Contiene los valores de cuota configurables para XmlDictionaryReaders.

System_CAPS_pubclassXmlDictionaryString

Representa una entrada almacenada en un XmlDictionary.

System_CAPS_pubclassXmlDictionaryWriter

Representa un resumen de la clase que Windows Communication Foundation (WCF) se deriva de XmlWriter para la serialización y deserialización.

System_CAPS_pubclassXmlDocument

Representa un documento XML.

Puede usar esta clase para cargar, validar, editar, agregar y posicionar el código XML en un documento. Para ver ejemplos, consulte la sección Remarks en esta página.

System_CAPS_pubclassXmlDocumentFragment

Representa un objeto ligero que es útil para las operaciones de inserción de árbol.

System_CAPS_pubclassXmlDocumentType

Representa la declaración de tipo de documento.

System_CAPS_pubclassXmlElement

Representa un elemento.

System_CAPS_pubclassXmlEntity

Representa una declaración de entidad, como <! ENTITY... >.

System_CAPS_pubclassXmlEntityReference

Representa un nodo de referencia a entidad.

System_CAPS_pubclassXmlException

Devuelve información detallada sobre la última excepción.

System_CAPS_pubclassXmlImplementation

Define el contexto de un conjunto de XmlDocument objetos.

System_CAPS_pubclassXmlLinkedNode

Obtiene el nodo inmediatamente antes o después de este nodo.

System_CAPS_pubclassXmlNamedNodeMap

Representa una colección de nodos a la que se puede acceder por nombre o índice.

System_CAPS_pubclassXmlNamespaceManager

Resuelve, agrega y quita los espacios de nombres de una colección, y proporciona administración de ámbito de estos espacios de nombres.

System_CAPS_pubclassXmlNameTable

Tabla de objetos en forma de cadena subdividida.

System_CAPS_pubclassXmlNode

Representa un único nodo en el documento XML.

System_CAPS_pubclassXmlNodeChangedEventArgs
System_CAPS_pubclassXmlNodeList

Representa una colección ordenada de nodos.

System_CAPS_pubclassXmlNodeReader

Representa un lector que proporciona, sin almacenamiento en caché directo sólo acceso rápido a datos XML en un XmlNode.

System_CAPS_pubclassXmlNotation

Representa una declaración de notación, como <! NOTACIÓN... >.

System_CAPS_pubclassXmlParserContext

Proporciona toda la información de contexto requerida por el XmlReader para analizar un fragmento XML.

System_CAPS_pubclassXmlProcessingInstruction

Representa una instrucción de procesamiento que XML define para conservar información específica del procesador en el texto del documento.

System_CAPS_pubclassXmlQualifiedName

Representa un nombre completo XML.

System_CAPS_pubclassXmlReader

Representa un lector que proporciona acceso rápido a datos XML, sin almacenamiento en caché y con desplazamiento solo hacia delante.

Para examinar el código fuente de .NET Framework para este tipo, vea la Reference Source.

System_CAPS_pubclassXmlReaderSettings

Especifica un conjunto de características compatibles en el XmlReader objeto creado por el Create (método).

System_CAPS_pubclassXmlResolver

Resuelve los recursos XML externos designados por un identificador uniforme de recursos (URI).

System_CAPS_pubclassXmlSecureResolver

Ayuda a proteger otra implementación de XmlResolver ajustando el objeto XmlResolver y restringiendo los recursos a los que tiene acceso el XmlResolver subyacente.

System_CAPS_pubclassXmlSignificantWhitespace

Representa el espacio en blanco entre marcas en un nodo de contenido mixto o espacio en blanco dentro del ámbito xml:space= "preserve". También se hace referencia a esto como espacio en blanco significativo.

System_CAPS_pubclassXmlText

Representa el contenido de texto de un elemento o atributo.

System_CAPS_pubclassXmlTextReader

Representa un lector que proporciona acceso rápido a datos XML, sin almacenamiento en caché y con desplazamiento solo hacia delante.

A partir de .NET Framework 2.0, se recomienda usar la clase System.Xml.XmlReader en su lugar.

System_CAPS_pubclassXmlTextWriter

Representa un escritor que proporciona una manera rápida, sin almacenamiento en caché y sólo hacia delante de generar secuencias o archivos con datos XML que se ajustan a espacios de nombres en recomendaciones XML y Extensible Markup Language (XML) 1.0 del W3C.

A partir de .NET Framework 2.0, se recomienda usar la clase System.Xml.XmlWriter en su lugar.

System_CAPS_pubclassXmlUrlResolver

Resuelve los recursos XML externos designados por un identificador uniforme de recursos (URI).

System_CAPS_pubclassXmlValidatingReader

Obsoleto. Representa un lector que proporciona validación de definiciones de tipos de documentos (DTD), de esquemas reducidos de datos XML (esquemas XDR) y del lenguaje de definición de esquemas XML (esquemas XSD).

Esta clase está obsoleta. A partir de .NET Framework 2.0, se recomienda usar la clase XmlReaderSettings y el método XmlReader.Create para crear un lector XML de validación.

System_CAPS_pubclassXmlWhitespace

Representa los espacios en blanco en el contenido del elemento.

System_CAPS_pubclassXmlWriter

Representa un sistema de escritura que constituye una manera rápida, no almacenada en caché y de solo avance para generar flujos o archivos que contienen datos XML.

System_CAPS_pubclassXmlWriterSettings

Especifica un conjunto de características compatibles en el XmlWriter objeto creado por el XmlWriter.Create (método).

System_CAPS_pubclassXmlXapResolver

Obsoleto. El tipo de XmlXapResolver se utiliza para resolver recursos en el paquete XAP de la aplicación de Silverlight.

InterfazDescripción
System_CAPS_pubinterfaceIApplicationResourceStreamResolver

Obsoleto. Representa a una resolución de secuencia de recursos de aplicación.

System_CAPS_pubinterfaceIFragmentCapableXmlDictionaryWriter

Contiene propiedades y métodos que cuando son implementados por un XmlDictionaryWriter, permiten el procesamiento de fragmentos XML.

System_CAPS_pubinterfaceIHasXmlNode

Permite que una clase devolver un XmlNode desde el contexto actual o la posición.

System_CAPS_pubinterfaceIStreamProvider

Representa una interfaz que puede ser implementada por clases que proporcionan secuencias.

System_CAPS_pubinterfaceIXmlBinaryReaderInitializer

Proporciona métodos para reinicializar un lector binario para leer un nuevo documento.

System_CAPS_pubinterfaceIXmlBinaryWriterInitializer

Especifica los requisitos de implementación para sistemas de escritura binarios XML que derivan de esta interfaz.

System_CAPS_pubinterfaceIXmlDictionary

interface que define el contrato que un diccionario Xml debe implementar para ser utilizado por XmlDictionaryReader e implementaciones XmlDictionaryWriter.

System_CAPS_pubinterfaceIXmlLineInfo

Proporciona una interfaz para habilitar una clase que devuelva información de línea y posición.

System_CAPS_pubinterfaceIXmlMtomReaderInitializer

Especifica los requisitos de implementación para los lectores de texto XML MTOM que derivan de esta interfaz.

System_CAPS_pubinterfaceIXmlMtomWriterInitializer

Cuando es implementada por un sistema de escritura MTOM, esta interfaz asegura la inicialización para un sistema de escritura MTOM.

System_CAPS_pubinterfaceIXmlNamespaceResolver

Proporciona acceso de solo lectura a un conjunto de asignaciones de prefijos y espacios de nombres.

System_CAPS_pubinterfaceIXmlTextReaderInitializer

Especifica los requisitos de implementación para los lectores de texto XML que derivan de esta interfaz.

System_CAPS_pubinterfaceIXmlTextWriterInitializer

Especifica los requisitos de implementación para los editores de texto XML que derivan de esta interfaz.

DelegadoDescripción
System_CAPS_pubdelegateOnXmlDictionaryReaderClose

delegate para un método de devolución de llamada al cerrar el lector.

System_CAPS_pubdelegateXmlNodeChangedEventHandler

Representa el método que controla NodeChanged, NodeChanging, NodeInserted, NodeInserting, NodeRemoved y NodeRemoving eventos.

EnumeraciónDescripción
System_CAPS_pubenumConformanceLevel

Especifica la cantidad de entrada o salida de comprobar que la XmlReader y XmlWriter realizan los objetos.

System_CAPS_pubenumDtdProcessing

Especifica las opciones para procesar DTD. El DtdProcessing enumeración la usa el XmlReaderSettings clase.

System_CAPS_pubenumEntityHandling

Especifica cómo el XmlTextReader o XmlValidatingReader controlan las entidades.

System_CAPS_pubenumFormatting

Especifica las opciones de formato para el XmlTextWriter.

System_CAPS_pubenumNamespaceHandling

Especifica si se va a quitar las declaraciones de espacios de nombres duplicados en la XmlWriter.

System_CAPS_pubenumNewLineHandling

Especifica cómo controlar los saltos de línea.

System_CAPS_pubenumReadState

Especifica el estado del lector.

System_CAPS_pubenumValidationType

Especifica el tipo de validación que se va a realizar.

System_CAPS_pubenumWhitespaceHandling

Especifica cómo se controla el espacio en blanco.

System_CAPS_pubenumWriteState

Especifica el estado de XmlWriter.

System_CAPS_pubenumXmlDateTimeSerializationMode

Especifica cómo tratar el valor de tiempo cuando realiza la conversión entre cadenas y DateTime.

System_CAPS_pubenumXmlDictionaryReaderQuotaTypes

Enumera los valores de cuota configurables para XmlDictionaryReaders.

System_CAPS_pubenumXmlNamespaceScope

Define el ámbito de espacio de nombres.

System_CAPS_pubenumXmlNodeChangedAction

Especifica el tipo de cambio de nodo.

System_CAPS_pubenumXmlNodeOrder

Describe el orden del documento de un nodo en comparación con un segundo nodo.

System_CAPS_pubenumXmlNodeType

Especifica el tipo de nodo.

System_CAPS_pubenumXmlOutputMethod

Especifica el método utilizado para serializar el XmlWriter salida.

System_CAPS_pubenumXmlSpace

Especifica el actual xml:space ámbito.

System_CAPS_pubenumXmlTokenizedType

Representa el tipo XML de la cadena. Esto permite que la cadena se lea como un tipo XML determinado, por ejemplo un tipo de sección CDATA.

El System.Xml espacio de nombres es compatible con estos estándares:

Consulte la sección diferencias respecto a las especificaciones W3C dos casos en que las clases XML difieren de las recomendaciones de W3C.

.NET Framework también proporciona otros espacios de nombres para las operaciones relacionadas con XML. Para obtener una lista, descripciones y vínculos, consulte la System.Xml Namespaces página Web.

El System.Xml.XmlReader y System.Xml.XmlWriter clases incluyen una serie de métodos asincrónicos que se basan en el. Estos métodos pueden identificarse por la cadena "Async" al final de sus nombres. Con estos métodos, puede escribir código asincrónico que es similar al código sincrónico y puede migrar fácilmente el código sincrónico existente en código asincrónico.

  • Use los métodos asincrónicos en aplicaciones donde hay latencia de flujo de red significativo. Evite usar las API asincrónicas para operaciones de lectura y escritura de secuencia de archivo local o de secuencia de memoria. La secuencia de entrada, XmlTextReader, y XmlTextWriter deben admitir también las operaciones asincrónicas. De lo contrario, subprocesos todavía se bloqueará por operaciones de E/S.

  • No se recomienda mezclar llamadas a funciones sincrónicas y asincrónicas, porque es posible que olvide utilizar el await (palabra clave) o utilizar una API sincrónica donde es necesaria una asincrónica.

  • No establezca la XmlReaderSettings.Async o XmlWriterSettings.Async marca true Si no piensa utilizar un método asincrónico.

  • Si ha olvidado especificar el await palabra clave cuando se llama a un método asincrónico, los resultados no son deterministas: es posible que reciba el resultado esperado o una excepción.

  • Cuando un XmlReader objeto está leyendo un nodo de texto grande, podría almacenar en caché sólo un valor parcial de texto y devolver el nodo de texto, por lo que recuperar el XmlReader.Value propiedad puede estar bloqueada por una operación de E/S. Utilice la GetValueAsync método para obtener el valor de texto en el modo asincrónico, o use el ReadValueChunkAsync bloquear el método para leer texto de gran tamaño en fragmentos.

  • Cuando se usa un XmlWriter de objeto, llame a la FlushAsync método antes de llamar a Close para evitar el bloqueo de una operación de E/S.

En los dos casos que implican las restricciones en los componentes de esquema del grupo de modelo, la System.Xml espacio de nombres difiere de las recomendaciones de W3C.

Coherencia en las declaraciones de elemento:

En algunos casos, cuando se utilizan grupos de sustitución, la System.Xml implementación no cumple el "esquema componente restricción: declaraciones de elemento coherentes," que se describe en el Constraints on Model Group Schema Components sección de la especificación de W3C.

Por ejemplo, el esquema siguiente incluye los elementos que tienen el mismo nombre pero se utilizan diferentes tipos en el mismo modelo de contenido y grupos de sustitución. Esto debería producir un error, pero System.Xml compila y valida el esquema sin errores.

<?xml version="1.0" encoding="utf-8" ?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

   <xs:element name="e1" type="t1"/>
   <xs:complexType name="t1"/>

   <xs:element name="e2" type="t2" substitutionGroup="e1"/>
      <xs:complexType name="t2">
         <xs:complexContent>
            <xs:extension base="t1">
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>

   <xs:complexType name="t3">
      <xs:sequence>
         <xs:element ref="e1"/>
         <xs:element name="e2" type="xs:int"/>
      </xs:sequence>
   </xs:complexType>
</xs:schema>

En este esquema, el tipo t3 contiene una secuencia de elementos. Debido a la sustitución, la referencia al elemento e1 de la secuencia puede generar el elemento e1 del tipo t1 o el elemento e2 del tipo t2. El último caso, se crearán en una secuencia de dos e2 elementos, donde uno es de tipo t2 y el otro es de tipo xs:int.

Atribución de partículas exclusivas:

En las siguientes condiciones, la System.Xml implementación cumplir el "esquema componente restricción: atribución de partículas únicas," que se describe en el Constraints on Model Group Schema Components sección de la especificación de W3C.

  • Uno de los elementos del grupo hace referencia a otro elemento.

  • El elemento referenciado es un elemento de encabezado de un grupo de sustituciones.

  • El grupo de sustitución contiene un elemento que tiene el mismo nombre que uno de los elementos en el grupo.

  • La cardinalidad del elemento que hace referencia al elemento de encabezado de grupo de sustitución y el elemento con el mismo nombre como un elemento de grupo de sustitución no se corrige (minOccurs < maxOccurs).

  • La definición del elemento al que hace referencia al grupo de sustitución precede a la definición del elemento con el mismo nombre que un elemento de grupo de sustitución.

Por ejemplo, en el esquema que figura más abajo, el modelo de contenido es ambiguo y debería generar un error de compilación, pero System.Xml compila el esquema sin errores.

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

  <xs:element name="e1" type="xs:int"/>
  <xs:element name="e2" type="xs:int" substitutionGroup="e1"/>

  <xs:complexType name="t3">
    <xs:sequence>
      <xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
      <xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="e3" type="t3"/>
</xs:schema>

Si intenta validar el siguiente XML con el esquema anterior, la validación se producirá un error con el siguiente mensaje: "el elemento 'e3' tiene secundario no válido elemento 'e2'." y un XmlSchemaValidationException se producirá la excepción.

<e3>
  <e2>1</e2>
  <e2>2</e2>
</e3>

Para evitar este problema, puede intercambiar las declaraciones del elemento en el documento XSD. Por ejemplo:

<xs:sequence>
  <xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
  <xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
</xs:sequence>

se transforma en:

<xs:sequence>
  <xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
  <xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
</xs:sequence>

Este es otro ejemplo del mismo problema:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
   <xs:element name="e1" type="xs:string"/>
   <xs:element name="e2" type="xs:string" substitutionGroup="e1"/>

   <xs:complexType name="t3">
      <xs:sequence>
         <xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
         <xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
      </xs:sequence>
   </xs:complexType>
   <xs:element name="e3" type="t3"/>
</xs:schema>

Si intenta validar el siguiente XML con el esquema anterior, la validación se producirá un error con la siguiente excepción: "excepción no controlada: System.Xml.Schema.XmlSchemaValidationException: el elemento 'e2' es válido: el valor 'abc' no es válido según su tipo de datos 'http://www.w3.org/2001/XMLSchema: int': la cadena 'abc' no es un valor Int32 válido." \

<e3><e2>abc</e2></e3>

Los tipos y miembros en el System.Xml espacio de nombres se basan en el. Las secciones siguientes tratan problemas de seguridad que son específicos de las tecnologías XML. Para obtener más información, vea los miembros mencionados y clases concretas y visite el XML Developer Center para obtener información técnica, descargas, grupos de noticias y otros recursos para desarrolladores de XML.

Observe también que al usar el System.Xml tipos y miembros, si el XML contiene datos que tiene posibles implicaciones de privacidad, deberá implementar la aplicación de forma que respeten la privacidad de los usuarios finales.

Acceso externo

Hay varias tecnologías XML que tienen la capacidad de recuperar otros documentos durante el procesamiento. Por ejemplo, una definición de tipo de documento (DTD) puede residir en el documento que se está analizando. La DTD también puede encontrarse en un documento externo al que hace referencia el documento que se está analizando. El lenguaje de definición de esquemas XML (XSD) y las tecnologías XSLT también tienen la capacidad de incluir información de otros archivos. Estos recursos externos pueden presentar algunos problemas de seguridad. Por ejemplo, deseará asegurarse de que la aplicación recupera los archivos sólo de sitios de confianza y que el archivo recupera no contiene datos malintencionados.

La XmlUrlResolver clase se utiliza para cargar documentos XML y para resolver recursos externos como entidades, DTD o esquemas e importar o incluir directivas.

Puede invalidar esta clase y especificar el XmlResolver objeto que se va a utilizar. Utilice la clase XmlSecureResolver si necesita abrir un recurso que no controla o que no es de confianza. XmlSecureResolver contiene un XmlResolver y le permite restringir los recursos a los que tiene acceso el XmlResolver subyacente.

Denegación de servicio

Las siguientes acciones se consideran menos vulnerables a ataques de denegación de servicio, porque las clases System.Xml incluyen un medio de protección frente a dichos ataques.

  • Análisis de datos XML de texto.

  • Analizar datos XML binarios si los datos XML binarios fue generados por Microsoft SQL Server.

  • Escritura de fragmentos y documentos XML desde orígenes de datos al sistema de archivos, secuencias, TextWriter o StringBuilder.

  • Carga de documentos en el objeto del Modelo de objetos de documento (DOM) si se utiliza un objeto XmlReader y DtdProcessing establecido en Prohibit.

  • Navegación por el objeto DOM.

No es recomendable realizar las siguientes acciones si le preocupan los ataques de denegación de servicio o si trabaja en un entorno que no es de confianza.

  • Procesamiento de DTD.

  • Procesamiento de esquemas. Esto incluye agregar un esquema que no es de confianza a la colección de esquemas, compilar un esquema que no es de confianza y realizar la validación utilizando un esquema que no es de confianza.

  • Procesamiento de XSLT.

  • Análisis de cualquier flujo arbitrario de datos XML binarios proporcionados por el usuario.

  • Operaciones DOM como, por ejemplo, consultas, ediciones, movimiento de subárboles entre documentos y guardado de objetos DOM.

Si le preocupa la denegación de problemas de servicio o si trabaja con orígenes de confianza, no habilite el procesamiento de DTD. Está desactivada de forma predeterminada en XmlReader objetos que el Create método crea.

System_CAPS_noteNota

XmlTextReader permite el procesamiento de DTD de manera predeterminada. Utilice la propiedad XmlTextReader.DtdProcessing para deshabilitar esta característica.

Si tiene habilitado el procesamiento de DTD, puede utilizar el XmlSecureResolver clase para restringir los recursos que la XmlReader puede tener acceso. También puede diseñar su aplicación para que el procesamiento XML se memoria y restricciones de tiempo. Por ejemplo, puede configurar límites de tiempo de espera en la aplicación ASP.NET.

Consideraciones para el procesamiento

Dado que los documentos XML pueden incluir referencias a otros archivos, resulta complicado determinar cuánta potencia de procesamiento será necesaria para analizar un documento XML. Por ejemplo, los documentos XML pueden incluir una DTD. Si la DTD contiene entidades anidadas o modelos de contenido complejos, podría ser necesario un tiempo de procesamiento elevado para analizar el documento.

Si utiliza XmlReader, puede limitar el tamaño del documento a analizar estableciendo la propiedad MaxCharactersInDocument. Puede limitar el número de caracteres que resultan de expandir las entidades estableciendo la propiedad MaxCharactersFromEntities. Para ver ejemplos de cómo establecer estas propiedades, vea los temas de referencia correspondientes.

Las tecnologías XSD y XSLT tienen capacidades adicionales que pueden afectar al rendimiento del procesamiento. Por ejemplo, es posible construir un esquema XML cuyo procesamiento requiere una cantidad sustancial de tiempo cuando se evalúa en un documento relativamente pequeño. También es posible incrustar bloques de scripts en una hoja de estilos XSLT. Ambos casos suponen una amenaza de seguridad a la aplicación.

Si crea una aplicación que utiliza la XslCompiledTransform clase, debe tener en cuenta los siguientes elementos y sus implicaciones:

  • El script XSLT está deshabilitado de manera predeterminada. El script XSLT solo se debería habilitar si necesita compatibilidad con scripts o si está trabajando en un entorno de total confianza.

  • La función document() XSLT está deshabilitada de manera predeterminada. Si habilita la función document(), restrinja los recursos a los que se tiene acceso pasando un objeto XmlSecureResolver al método Transform.

  • Los objetos de extensión están habilitados de manera predeterminada. Si se pasa un objeto XsltArgumentList que contiene objetos de extensión al método Transform, los objetos de extensión se utilizan.

  • Las hojas de estilos XLST pueden incluir referencias a otros archivos y bloques de scripts incrustados. Un usuario malintencionado puede aprovecharse de esta característica para proporcionarle datos u hojas de estilos que, cuando se ejecutan, pueden hacer que el sistema los procese hasta que el equipo se quede sin recursos.

  • Aplicaciones XSLT que se ejecutan en un entorno de confianza mixto podrían suplantaciones de hoja de estilo. Por ejemplo, un usuario malintencionado podría cargar un objeto con una hoja de estilos perjudicial y pasárselo a otro usuario que, a continuación, llama al método Transform y ejecuta la transformación.

Estos problemas de seguridad se pueden mitigar si no se habilitan los scripts o la función document() a menos que la hoja de estilos provenga de un origen de confianza, y si no se aceptan objetos XslCompiledTransform, hojas de estilos XSLT o datos de origen XML de un origen que no es de confianza.

Control de excepciones

Las excepciones producidas por componentes de nivel inferior pueden revelar información de ruta de acceso que no desea que expone a la aplicación. Las aplicaciones deben detectar las excepciones y procesarlas correctamente.

Volver al principio
Mostrar: