Compartilhar via


XML Reader

O Leitor de XML é um cursor sobre uma fonte de entrada de XML. Em sua essência, um Leitor de XML lê um nó XML por vez, mas há APIs auxiliares adicionais para facilitar a leitura de uma sequência de nós.

Há suporte para os seguintes tipos de entrada de leitores:

Segurança

O leitor verificará se os atributos presentes em um elemento são exclusivos. O tempo necessário para executar essa validação é uma função do número de atributos no elemento que pode ser tão grande quanto WS_XML_READER_PROPERTY_MAX_ATTRIBUTES. Portanto, processar documentos grandes quando WS_XML_READER_PROPERTY_MAX_ATTRIBUTES é definido como um valor grande pode apresentar uma oportunidade para um ataque de negação de serviço.

O leitor mapeará prefixos para namespaces para cada elemento e atributos. O tempo necessário para executar esse mapeamento é uma função do número de atributos xmlns no escopo que pode ser tão grande quanto WS_XML_READER_PROPERTY_MAX_NAMESPACES. Portanto, o processamento de documentos grandes quando essa propriedade é definida como um valor grande pode apresentar uma oportunidade para um ataque de negação de serviço.

Embora o leitor garanta que o documento siga a especificação gramatical de xml e, além disso, que seus aspectos estejam dentro das cotas especificadas, o conteúdo do documento ainda deve ser considerado não confiável ao vir de uma fonte não confiável. Os usuários do leitor devem marcar todos os nomes e namespaces de elementos e atributos usando WsReadToStartElement, WsFindAttribute ou inspecionando manualmente nós.

Algumas outras situações a serem consideradas incluem, mas não se limitam a:

  • Elementos esperados podem estar ausentes
  • Elementos inesperados podem aparecer
  • Atributos esperados podem estar ausentes
  • Atributos inesperados podem aparecer
  • Elementos podem aparecer como elementos vazios
  • O espaço em branco pode aparecer em lugares inesperados

Os usuários do leitor não devem alocar memória com base simplesmente em valores lidos do documento. Por exemplo, considere o seguinte documento xml:

<array count='1000000'>
   <!-- malicious document provider didn't actually provide 1000000 array items -->
</array>

Alocar uma soley baseada em matriz com base na suposição de que alguns elementos seguirão seria um vetor de ataque em potencial. O usuário do leitor nesse caso deve, em vez disso, alocar incrementalmente a memória à medida que os elementos aparecerem.

O leitor de XML não dá suporte a DTD. O usuário do leitor não precisa se preocupar com a verificação de DTD.

O retorno de chamada a seguir é usado com leitores XML:

As seguintes enumerações são usadas com leitores XML:

As seguintes funções são usadas com leitores XML:

O seguinte identificador é usado com leitores XML:

As seguintes estruturas são usadas com leitores XML: