XmlReaderSettings.MaxCharactersInDocument Propiedad

Definición

Obtiene o establece un valor que indica el número máximo de caracteres permitido en un documento XML. Un valor cero (0) significa que no existe ningún límite en el tamaño del documento XML. Un valor distinto de cero especifica el tamaño máximo, en caracteres.

C#
public long MaxCharactersInDocument { get; set; }

Valor de propiedad

El número máximo de caracteres permitido en un documento XML. El valor predeterminado es 0.

Ejemplos

El código siguiente establece esta propiedad y, a continuación, intenta analizar un documento mayor que el límite. 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ño como para limitar la amenaza de documentos malintencionados.

C#
string markup = "<Root>Content</Root>";

XmlReaderSettings settings = new XmlReaderSettings();
settings.MaxCharactersInDocument = 10;

try
{
    XmlReader reader = XmlReader.Create(new StringReader(markup), settings);
    while (reader.Read()) { }
}
catch (XmlException ex)
{
    Console.WriteLine(ex.Message);
}

Este código genera el siguiente resultado:

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

Comentarios

Un valor cero (0) significa que no hay límites en el número de caracteres del documento analizado. Un valor distinto de cero especifica el número máximo de caracteres que se pueden analizar.

El número máximo de caracteres del documento incluye el recuento de caracteres resultantes de entidades expandidas.

Si el lector intenta leer un documento con un tamaño que supere esta propiedad, se producirá una XmlException excepción .

Esta propiedad permite mitigar los ataques de denegación de servicio en los que el atacante envía documentos XML extremadamente grandes. Al limitar el tamaño de un documento, puede detectar el ataque y recuperarse de forma confiable.

Se aplica a

Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0