XmlReaderSettings.MaxCharactersFromEntities XmlReaderSettings.MaxCharactersFromEntities XmlReaderSettings.MaxCharactersFromEntities XmlReaderSettings.MaxCharactersFromEntities Property

Definición

Obtiene o establece un valor que indica el número máximo de caracteres permitido en un documento que resulta de expandir las 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 de propiedad

El número máximo de caracteres permitido de las entidades expandidas.The maximum allowable number of characters from expanded entities. El valor predeterminado es 0.The default is 0.

Ejemplos

El código siguiente establece esta propiedad y, a continuación, intenta analizar un documento que contiene una entidad que se expande a un tamaño mayor que el límite establecido.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. En un escenario real, establecería este límite en un valor lo suficientemente grande como para controlar documentos válidos, pero lo suficientemente pequeños como para limitar la amenaza de documentos malintencionados.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 ejemplo produce el siguiente resultado:This example produces the following output:

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

Comentarios

Un valor de cero (0) significa que no hay límites en el número de caracteres resultante de expandir las entidades.A zero (0) value means no limits on the number of characters that result from expanding entities. Un valor distinto de cero especifica el número máximo de caracteres que pueden ser el resultado de expandir las entidades.A non-zero value specifies the maximum number of characters that can result from expanding entities.

Si el lector intenta leer un documento que contiene entidades de modo que el tamaño expandido supere esta propiedad, XmlException se producirá una excepción.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.

Esta propiedad permite mitigar los ataques de denegación de servicio en los que el atacante envía documentos XML que intentan superar los límites de memoria a través de la expansión de las entidades.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. Al limitar los caracteres que son el resultado de las entidades expandidas, puede detectar el ataque y recuperarse de forma confiable.By limiting the characters that result from expanded entities, you can detect the attack and recover reliably.

Se aplica a