XmlReaderSettings.MaxCharactersInDocument 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
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
속성 값
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 문서를 제출하는 서비스 거부 공격을 완화할 수 있습니다. 문서의 크기를 제한하여 공격을 감지하고 안정적으로 복구할 수 있습니다.