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 초과하는 크기의 문서를 읽으려고 하면 throw됩니다.

이 속성을 사용하면 공격자가 매우 큰 XML 문서를 제출하는 서비스 거부 공격을 완화할 수 있습니다. 문서의 크기를 제한하여 공격을 감지하고 안정적으로 복구할 수 있습니다.

적용 대상