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.

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. Die Standardeinstellung ist 0.

Beispiele

Der folgende Code legt diese Eigenschaft fest, und versucht dann, ein Dokument zu analysieren, das eine Entität enthält, die auf eine Größe erweitert wird, die größer als der festgelegte Grenzwert ist. In einem realen Szenario würden Sie diesen Grenzwert auf einen Wert festlegen, der groß genug ist, um gültige Dokumente zu behandeln, aber klein genug, um die Bedrohung von böswilligen Dokumenten zu beschränken.

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:

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

Hinweise

Ein Nullwert (0) bedeutet keine Grenzwerte für die Anzahl der Zeichen, die aus erweiterten Entitäten resultieren. Ein Wert ohne Null gibt die maximale Anzahl von Zeichen an, die aus der Erweiterung von Entitäten resultieren können.

Wenn der Leser versucht, ein Dokument zu lesen, das Entitäten enthält, sodass die erweiterte Größe diese Eigenschaft überschreitet, wird eine XmlException ausgelöst.

Mit dieser Eigenschaft können Sie Dieial-of-Service-Angriffe verringern, bei denen der Angreifer XML-Dokumente sendet, die versuchen, Speichergrenzwerte über erweiterungsende Entitäten zu überschreiten. Durch Einschränken der Zeichen, die aus erweiterten Entitäten resultieren, können Sie den Angriff erkennen und zuverlässig wiederherstellen.

Gilt für