XmlReaderSettings.MaxCharactersFromEntities Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt een waarde opgehaald of ingesteld die het maximaal toegestane aantal tekens in een document aangeeft dat het gevolg is van het uitbreiden van entiteiten.
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
Waarde van eigenschap
Het maximaal toegestane aantal tekens uit uitgebreide entiteiten. De standaardwaarde is 0.
Voorbeelden
Met de volgende code wordt deze eigenschap ingesteld en wordt vervolgens geprobeerd een document te parseren dat een entiteit bevat die groter is dan de ingestelde limiet. In een praktijkscenario stelt u deze limiet in op een waarde die groot genoeg is om geldige documenten te verwerken, maar klein genoeg om de bedreiging van schadelijke documenten te beperken.
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
In dit voorbeeld wordt de volgende uitvoer gegenereerd:
There is an error in XML document (MaxCharactersFromEntities, ).
Opmerkingen
Een nulwaarde (0) betekent geen limieten voor het aantal tekens dat het gevolg is van uitbreidbare entiteiten. Een niet-nulwaarde geeft het maximum aantal tekens aan dat kan voortvloeien uit uit groeiende entiteiten.
Als de lezer probeert een document te lezen dat entiteiten bevat, zodat de uitgebreide grootte deze eigenschap overschrijdt, wordt er een XmlException gegenereerd.
Met deze eigenschap kunt u denial of service-aanvallen beperken waarbij de aanvaller XML-documenten verzendt die proberen de geheugenlimieten te overschrijden via uitbreidende entiteiten. Door de tekens te beperken die het gevolg zijn van uitgebreide entiteiten, kunt u de aanval detecteren en betrouwbaar herstellen.