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.

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

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.

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.

Şunlara uygulanır