Classe System.Xml.XmlReaderSettings

Este artigo fornece observações complementares à documentação de referência para essa API.

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

Consulte as seções Comentários das 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 construtor XmlReaderSettings() para obter uma lista de configurações padrão.

Considerações de segurança

Considere o seguinte ao utilizar a classe XmlReaderSettings.

  • Os sinalizadores de validação de ProcessInlineSchema e de ProcessSchemaLocation de um objeto de 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 objeto XmlResolver for null, os locais do esquema não serão resolvidos, mesmo que os sinalizadores de validação ProcessInlineSchema e ProcessSchemaLocation estejam definidos.

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

  • As mensagens de erro de validação podem expor as 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 com a definição do sinalizador ReportValidationWarnings.

  • 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.

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

  • os objetos deXmlReaderSettings podem conter informações sigilosas como credenciais do usuário. Você deve ser cuidadoso ao armazenar em cachê XmlReaderSettings objetos, ou para passar o objeto de XmlReaderSettings de um componente para outro.

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

  • Aceitar componentes de suporte, como NameTable, XmlNamespaceManager, e objetos de XmlResolver , de uma fonte não confiável.

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