XmlReaderSettings.MaxCharactersFromEntities Özellik

Tanım

Belgedeki en fazla izin verilen karakter sayısını belirten ve varlıkların genişletilmesinden kaynaklanan bir değer alır veya ayarlar.

C#
public long MaxCharactersFromEntities { get; set; }

Özellik Değeri

Int64

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.

C#
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);  
}  

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.

Şunlara uygulanır

Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0