XmlReaderSettings.MaxCharactersFromEntities Eigenschap

Definitie

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.

Van toepassing op