次の方法で共有


XmlReaderSettings.MaxCharactersInDocument プロパティ

定義

XML ドキュメントの最大文字数を示す値を取得または設定します。 ゼロ (0) の値は、XML ドキュメントのサイズに制限がないことを示します。 0 以外の値は、最大サイズを文字数で示します。

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

プロパティ値

Int64

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) の値は、解析されたドキュメント内の文字数に制限がないことを意味します。 0 以外の値は、解析できる最大文字数を指定します。

ドキュメントの最大文字数には、展開されたエンティティの結果の文字数が含まれます。

リーダーがこのプロパティを超えるサイズのドキュメントを読み取ろうとすると、スロー XmlException されます。

このプロパティを使用すると、攻撃者が非常に大きな XML ドキュメントを送信するサービス拒否攻撃を軽減できます。 ドキュメントのサイズを制限することで、攻撃を検出し、確実に回復できます。

適用対象