XmlReaderSettings.MaxCharactersInDocument 属性

定义

获取或设置一个值,该值指示 XML 文档中允许的最大字符数。 零(0)值表示对 XML 文档的大小没有限制。 非零值指定最大大小(以字符为单位)。

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

属性值

XML 文档中允许的最大字符数。 默认值为 0。

示例

以下代码设置此属性,然后尝试分析大于限制的文档。 在实际方案中,将此限制设置为足以处理有效文档的值,但足够小,可以限制恶意文档的威胁。

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);
}
Dim markup As String = "<Root>Content</Root>"

Dim settings As XmlReaderSettings = New XmlReaderSettings()
settings.MaxCharactersInDocument = 10

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

此代码生成以下输出:

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

注解

零(0)值表示对已分析文档中字符数没有限制。 非零值指定可分析的最大字符数。

文档的最大字符计数包括扩展实体生成的字符计数。

如果读取者尝试读取大小超过此属性的文档,将引发一个 XmlException

此属性允许你缓解攻击者提交非常大的 XML 文档的拒绝服务攻击。 通过限制文档的大小,可以检测攻击并可靠地恢复。

适用于