Compartilhar via


Classe System.Xml.XmlReaderSettings

Este artigo fornece comentários complementares à documentação de referência para esta API.

Use o método Create para obter instâncias XmlReader. Esse método usa a XmlReaderSettings classe para especificar quais recursos implementar no XmlReader objeto que ele cria.

Consulte as seções de comentários nas páginas de referência XmlReader e Create para obter informações sobre quais configurações usar para verificações de conformidade, validação e outros cenários comuns. Consulte o XmlReaderSettings() construtor para obter uma lista de configurações padrão.

Considerações de segurança

Considere o seguinte ao usar a XmlReaderSettings classe.

  • Os sinalizadores de validação ProcessInlineSchema e ProcessSchemaLocation de um objeto XmlReaderSettings não são definidos por padrão. Quando esses sinalizadores são definidos, XmlResolver do objeto de XmlReaderSettings é usado para resolver os locais de esquema encontrados no documento de instância em XmlReader. Se o XmlResolver objeto estiver null, os locais de esquema não serão resolvidos mesmo se os sinalizadores ProcessInlineSchema e ProcessSchemaLocation de validação estiverem definidos.

  • Os esquemas adicionados durante a validação adicionam novos tipos e podem alterar o resultado da validação do documento que está sendo validado. Como resultado, os esquemas externos só devem ser resolvidos de fontes confiáveis.

  • Mensagens de erro de validação podem expor informações confidenciais do modelo de conteúdo. As mensagens de aviso e erro de validação são tratadas com o uso do delegado ValidationEventHandler ou são expostas como XmlSchemaValidationException se nenhum manipulador de eventos for fornecido ao objeto XmlReaderSettings (os avisos de validação não fazem com que um XmlSchemaValidationException seja gerado). Essas informações do modelo de conteúdo não devem ser expostas em cenários não confiáveis. As mensagens de aviso de validação são suprimidas por padrão e podem ser relatadas definindo o ReportValidationWarnings sinalizador.

  • A propriedade SourceUri de um XmlSchemaValidationException retorna o caminho do URI para o arquivo de esquema que causou a exceção. A propriedade SourceUri não deve ser exposta em cenários não confiáveis.

  • É recomendável desabilitar o ProcessIdentityConstraints sinalizador (habilitado por padrão) ao validar documentos XML grandes e não confiáveis em cenários de alta disponibilidade em relação a um esquema com restrições de identidade em grande parte do documento.

  • XmlReaderSettings os objetos podem conter informações confidenciais, como credenciais de usuário. Você deve ter cuidado ao armazenar objetos em cache XmlReaderSettings ou ao passar o XmlReaderSettings objeto de um componente para outro.

  • O processamento de DTD está desabilitado por padrão. Se você habilitar o processamento de DTD, precisará estar ciente da inclusão de DTDs de fontes não confiáveis e possíveis ataques de negação de serviço. Use o XmlSecureResolver para restringir os recursos que o XmlReader pode acessar.

  • Não aceite componentes de suporte, como NameTable, XmlNamespaceManagere XmlResolver objetos, de uma fonte não confiável.

  • O uso de memória de um aplicativo que usa XmlReader pode ter uma correlação com o tamanho do documento XML analisado. Uma forma de ataque de negação de serviço é quando documentos XML excessivamente grandes são enviados para serem analisados. Você pode limitar o tamanho do documento que pode ser analisado definindo a MaxCharactersInDocument propriedade e, em seguida, limitar o número de caracteres resultantes da expansão de entidades definindo a MaxCharactersFromEntities propriedade.