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.
Dient zum Abrufen oder Festlegen eines Werts, der die maximal zulässige Anzahl von Zeichen in einem Dokument angibt, die aus erweiterten Entitäten resultieren.
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 maximal zulässige Anzahl von Zeichen aus erweiterten Entitäten. Der Standardwert lautet 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 verarbeiten, aber klein genug, um die Bedrohung von böswilligen Dokumenten zu begrenzen.
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 Begrenzungen für die Anzahl von Zeichen, die sich aus expandierenden Entitäten ergeben. Ein Wert ungleich 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 ein XmlException Fehler ausgelöst.
Diese Eigenschaft ermöglicht es Ihnen, Denial-of-Service-Angriffe zu mindern, bei denen der Angreifer XML-Dokumente sendet, die versuchen, die Speichergrenzwerte über erweiterte Entitäten zu überschreiten. Indem Sie die Zeichen einschränken, die sich aus erweiterten Entitäten ergeben, können Sie den Angriff erkennen und zuverlässig wiederherstellen.