XmlReaderSettings.MaxCharactersInDocument XmlReaderSettings.MaxCharactersInDocument XmlReaderSettings.MaxCharactersInDocument XmlReaderSettings.MaxCharactersInDocument Property


XML ドキュメントの最大文字数を示す値を取得または設定します。Gets or sets a value indicating the maximum allowable number of characters in an XML document. ゼロ (0) の値は、XML ドキュメントのサイズに制限がないことを示します。A zero (0) value means no limits on the size of the XML document. 0 以外の値は、最大サイズを文字数で示します。A non-zero value specifies the maximum size, in characters.

 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 ドキュメント内の最大文字数。The maximum allowable number of characters in an XML document. 既定値は 0 です。The default is 0.

次のコードでは、このプロパティを設定してから、制限を超えるドキュメントを解析しようとしています。The following code sets this property, and then attempts to parse a document larger than the limit. 実際のシナリオでは、有効なドキュメントを処理するのに十分な大きさの値にこの制限を設定しますが、悪意のあるドキュメントから脅威を制限するのは十分ではありません。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 = "<Root>Content</Root>";  
XmlReaderSettings settings = new XmlReaderSettings();  
settings.MaxCharactersInDocument = 10;  
    XmlReader reader = XmlReader.Create(new StringReader(markup), settings);  
    while (reader.Read()) { }  
catch (XmlException ex)  
Dim markup As String = "<Root>Content</Root>"  
Dim settings As XmlReaderSettings = New XmlReaderSettings()  
settings.MaxCharactersInDocument = 10  
    Dim reader As XmlReader = XmlReader.Create(New StringReader(markup), settings)  
    While (reader.Read())  
    End While  
Catch ex As XmlException  
End Try  

このコードを実行すると、次の出力が生成されます。This code produces the following output:

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


ゼロ (0) の値は、解析されたドキュメント内の文字数に制限がないことを意味します。A zero (0) value means no limits on the number of characters in the parsed document. 0以外の値は、解析できる最大文字数を指定します。A non-zero value specifies the maximum number of characters that can be parsed.

ドキュメントの最大文字数には、展開されたエンティティの結果の文字数が含まれます。The maximum character count for the document includes the count of characters that result from expanded entities.

リーダーがこのプロパティXmlExceptionを超えるサイズのドキュメントを読み取ろうとすると、がスローされます。If the reader attempts to read a document with a size that exceeds this property, an XmlException will be thrown.

このプロパティを使用すると、攻撃者が非常に大きな XML ドキュメントを送信するサービス拒否攻撃を軽減できます。This property allows you to mitigate denial of service attacks where the attacker submits extremely large XML documents. ドキュメントのサイズを制限することで、攻撃を検出し、確実に復旧できます。By limiting the size of a document, you can detect the attack and recover reliably.