XmlReaderSettings.MaxCharactersFromEntities Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
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.