Partilhar via


Leitor XML

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

Os seguintes tipos de entrada de leitores são suportados:

Segurança

O leitor verificará se os atributos presentes em um elemento são exclusivos. O tempo necessário para realizar 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, o processamento de documentos grandes quando WS_XML_READER_PROPERTY_MAX_ATTRIBUTES é definido como um valor grande pode representar 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 representar uma oportunidade para um ataque de negação de serviço.

Embora o leitor garanta que o documento segue a especificação gramatical do xml e, além disso, que seus aspetos estão dentro das cotas especificadas, o conteúdo do documento ainda deve ser considerado não confiável quando vem de uma fonte não confiável. Os usuários do leitor devem verificar todos os nomes de elementos e atributos e namespaces usando WsReadToStartElement, WsFindAttributeou inspecionando manualmente nós.

Algumas outras situações a considerar incluem, mas não estão limitadas a:

  • Elementos esperados podem estar faltando
  • Elementos inesperados podem aparecer
  • Atributos esperados podem estar faltando
  • Atributos inesperados podem aparecer
  • Os elementos podem aparecer como elementos vazios
  • 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 matriz baseada na suposição de que algum número de elementos seguirá seria um vetor de ataque potencial. O usuário do leitor, neste caso, deve, em vez disso, alocar incrementalmente a memória à medida que os elementos aparecem.

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

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

As enumerações a seguir 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: