XmlReaderSettings.MaxCharactersFromEntities Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Belgedeki en fazla izin verilen karakter sayısını belirten ve varlıkların genişletilmesinden kaynaklanan bir değer alır veya ayarlar.
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
Özellik Değeri
Genişletilmiş varlıklardan izin verilen en fazla karakter sayısı. Varsayılan değer, 0'dur.
Örnekler
Aşağıdaki kod bu özelliği ayarlar ve küme sınırından daha büyük bir boyuta genişleten bir varlık içeren bir belgeyi ayrıştırmaya çalışır. Gerçek bir dünya senaryosunda, bu sınırı geçerli belgeleri işlemek için yeterince büyük, ancak kötü amaçlı belgelerden gelen tehdidi sınırlayabilecek kadar küçük bir değere ayarlarsınız.
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
Bu örnek aşağıdaki çıkışı oluşturur:
There is an error in XML document (MaxCharactersFromEntities, ).
Açıklamalar
Sıfır (0) değeri, varlıkların genişletilmesinden kaynaklanan karakter sayısında sınır olmadığı anlamına gelir. Sıfır olmayan bir değer, varlıkların genişletilmesinden kaynaklanabilecek karakter sayısı üst sınırını belirtir.
Okuyucu, genişletilmiş boyutun bu özelliği aşması gibi varlıklar içeren bir belgeyi okumaya çalışırsa, bir XmlException oluşturulur.
Bu özellik, saldırganın genişleyen varlıklar aracılığıyla bellek sınırlarını aşmaya çalışan XML belgeleri gönderdiği hizmet reddi saldırılarını azaltmanıza olanak tanır. Genişletilmiş varlıklardan kaynaklanan karakterleri sınırlayarak saldırıyı algılayabilir ve güvenilir bir şekilde kurtarabilirsiniz.