XmlReaderSettings.MaxCharactersFromEntities Propriedade

Definição

Obtém ou define um valor que indica o número máximo permitido de caracteres em um documento resultante da expansão de entidades.Gets or sets a value indicating the maximum allowable number of characters in a document that result from expanding entities.

public:
 property long MaxCharactersFromEntities { long get(); void set(long value); };
public long MaxCharactersFromEntities { get; set; }
member this.MaxCharactersFromEntities : int64 with get, set
Public Property MaxCharactersFromEntities As Long

Valor da propriedade

O número máximo permitido de caracteres de entidades expandidas.The maximum allowable number of characters from expanded entities. O padrão é 0.The default is 0.

Exemplos

O código a seguir define essa propriedade e, em seguida, tenta analisar um documento que contém uma entidade que se expande para um tamanho maior que o limite definido.The following code sets this property, and then attempts to parse a document that contains an entity that expands to a size greater than the set limit. Em um cenário do mundo real, você definiria esse limite com um valor grande o suficiente para lidar com documentos válidos, embora seja pequeno o suficiente para limitar a ameaça de documentos mal-intencionados.In a real world scenario, you would set this limit to a value large enough to handle valid documents, yet small enough to limit the threat from malicious documents.

string markup =  
@"<!DOCTYPE Root [  
  <!ENTITY anEntity ""Expands to more than 30 characters"">  
  <!ELEMENT Root (#PCDATA)>  
]>  
<Root>Content &anEntity;</Root>";  
  
XmlReaderSettings settings = new XmlReaderSettings();  
settings.DtdProcessing = DtdProcessing.Parse;  
settings.ValidationType = ValidationType.DTD;  
settings.MaxCharactersFromEntities = 30;  
  
try  
{  
    XmlReader reader = XmlReader.Create(new StringReader(markup), settings);  
    while (reader.Read()) { }  
}  
catch (XmlException ex)  
{  
    Console.WriteLine(ex.Message);  
}  
Dim markup As String = _  
    "<!DOCTYPE Root [" + Environment.NewLine + _  
    "  <!ENTITY anEntity ""Expands to more than 30 characters"">" + Environment.NewLine + _  
    "  <!ELEMENT Root (#PCDATA)>" + Environment.NewLine + _  
    "]>" + Environment.NewLine + _  
    "<Root>Content &anEntity;</Root>"  
  
Dim settings As XmlReaderSettings = New XmlReaderSettings()  
settings.DtdProcessing = DtdProcessing.Parse;  
settings.ValidationType = ValidationType.DTD  
settings.MaxCharactersFromEntities = 30  
  
Try  
    Dim reader As XmlReader = XmlReader.Create(New StringReader(markup), settings)  
    While (reader.Read())  
    End While  
Catch ex As XmlException  
    Console.WriteLine(ex.Message)  
End Try  

Este exemplo gera a seguinte saída:This example produces the following output:

There is an error in XML document (MaxCharactersFromEntities, ).  

Comentários

Um valor zero (0) significa que não há limites no número de caracteres que resultam da expansão de entidades.A zero (0) value means no limits on the number of characters that result from expanding entities. Um valor diferente de zero Especifica o número máximo de caracteres que podem resultar da expansão de entidades.A non-zero value specifies the maximum number of characters that can result from expanding entities.

Se o leitor tentar ler um documento que contém entidades de modo que o tamanho expandido exceda essa propriedade, XmlException um será gerado.If the reader attempts to read a document that contains entities such that the expanded size will exceed this property, an XmlException will be thrown.

Essa propriedade permite atenuar ataques de negação de serviço em que o invasor envia documentos XML que tentam exceder os limites de memória por meio de entidades em expansão.This property allows you to mitigate denial of service attacks where the attacker submits XML documents that attempt to exceed memory limits via expanding entities. Ao limitar os caracteres que resultam de entidades expandidas, você pode detectar o ataque e recuperar-se de forma confiável.By limiting the characters that result from expanded entities, you can detect the attack and recover reliably.

Aplica-se a