XmlReaderSettings.MaxCharactersFromEntities 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
문서에서 엔터티 확장명 후의 최대 허용 문자 수를 나타내는 값을 가져오거나 설정합니다.
public:
property long MaxCharactersFromEntities { long get(); void set(long value); };
public long MaxCharactersFromEntities { get; set; }
member this.MaxCharactersFromEntities : int64 with get, set
Public Property MaxCharactersFromEntities As Long
속성 값
확장된 엔터티의 최대 허용 문자 수입니다. 기본값은 0입니다.
예제
다음 코드는 이 속성을 설정한 다음, 설정된 제한보다 큰 크기로 확장되는 엔터티가 포함된 문서를 구문 분석하려고 시도합니다. 실제 시나리오에서는 이 제한을 유효한 문서를 처리할 수 있을 만큼 큰 값으로 설정하면서도 악의적인 문서의 위협을 제한할 만큼 작습니다.
string markup =
@"<!DOCTYPE Root [
<!ENTITY anEntity ""Expands to more than 30 characters"">
<!ELEMENT Root (#PCDATA)>
]>
<Root>Content &anEntity;</Root>";
XmlReaderSettings settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Parse;
settings.ValidationType = ValidationType.DTD;
settings.MaxCharactersFromEntities = 30;
try
{
XmlReader reader = XmlReader.Create(new StringReader(markup), settings);
while (reader.Read()) { }
}
catch (XmlException ex)
{
Console.WriteLine(ex.Message);
}
Dim markup As String = _
"<!DOCTYPE Root [" + Environment.NewLine + _
" <!ENTITY anEntity ""Expands to more than 30 characters"">" + Environment.NewLine + _
" <!ELEMENT Root (#PCDATA)>" + Environment.NewLine + _
"]>" + Environment.NewLine + _
"<Root>Content &anEntity;</Root>"
Dim settings As XmlReaderSettings = New XmlReaderSettings()
settings.DtdProcessing = DtdProcessing.Parse;
settings.ValidationType = ValidationType.DTD
settings.MaxCharactersFromEntities = 30
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 (MaxCharactersFromEntities, ).
설명
0 값은 엔터티 확장으로 인해 발생하는 문자 수에 제한이 없음을 의미합니다. 0이 아닌 값은 엔터티 확장으로 인해 발생할 수 있는 최대 문자 수를 지정합니다.
판독기에서 확장된 크기가 이 속성을 XmlException 초과할 수 있도록 엔터티가 포함된 문서를 읽으려고 하면 throw됩니다.
이 속성을 사용하면 공격자가 확장 엔터티를 통해 메모리 제한을 초과하려는 XML 문서를 제출하는 서비스 거부 공격을 완화할 수 있습니다. 확장된 엔터티에서 발생하는 문자를 제한하여 공격을 감지하고 안정적으로 복구할 수 있습니다.