XmlReaderSettings.MaxCharactersFromEntities Eigenschaft

Definition

Ruft einen Wert ab, der die maximal zulässige Anzahl von Zeichen in einem Dokument angibt, die aus dem Erweitern von Entitäten resultieren, oder legt diesen fest.Gets or sets a value indicating the maximum allowable number of characters in a document that result from expanding entities.

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

Eigenschaftswert

Int64

Die maximale zulässige Anzahl von Zeichen aus erweiterten Entitäten.The maximum allowable number of characters from expanded entities. Die Standardeinstellung ist 0.The default is 0.

Beispiele

Mit dem folgenden Code wird diese Eigenschaft festgelegt, und anschließend wird versucht, ein Dokument zu analysieren, das eine Entität enthält, die eine größere Größe als das festgelegte Limit erreicht.The following code sets this property, and then attempts to parse a document that contains an entity that expands to a size greater than the set limit. In einem realen Szenario legen Sie diese Beschränkung auf einen Wert fest, der groß genug ist, um gültige Dokumente zu verarbeiten, aber klein genug, um die Bedrohung durch böswillige Dokumente einzuschränken.In a real world scenario, you would set this limit to a value large enough to handle valid documents, yet small enough to limit the threat from malicious documents.

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  

Dieses Beispiel erzeugt die folgende Ausgabe:This example produces the following output:

There is an error in XML document (MaxCharactersFromEntities, ).  

Hinweise

Ein NULL-Wert (0) bedeutet, dass die Anzahl der Zeichen, die sich aus dem Erweitern von Entitäten ergeben, nicht begrenzt istA zero (0) value means no limits on the number of characters that result from expanding entities. Ein Wert ungleich 0 (null) gibt die maximale Anzahl von Zeichen an, die sich aus erweiterbaren Entitäten ergeben können.A non-zero value specifies the maximum number of characters that can result from expanding entities.

Wenn der Reader versucht, ein Dokument zu lesen, das Entitäten enthält, sodass die erweiterte Größe diese Eigenschaft überschreitet, wird eine ausgelöst XmlException .If the reader attempts to read a document that contains entities such that the expanded size will exceed this property, an XmlException will be thrown.

Diese Eigenschaft ermöglicht Ihnen das Verringern von Denial-of-Service-Angriffen, bei denen der Angreifer XML-Dokumente übermittelt, die versuchen, die Arbeitsspeicher Limits über die ErweiterungThis property allows you to mitigate denial of service attacks where the attacker submits XML documents that attempt to exceed memory limits via expanding entities. Durch das Einschränken der Zeichen, die sich aus erweiterten Entitäten ergeben, können Sie den Angriff erkennen und zuverlässig wiederherstellen.By limiting the characters that result from expanded entities, you can detect the attack and recover reliably.

Gilt für: