XmlReaderSettings.MaxCharactersFromEntities XmlReaderSettings.MaxCharactersFromEntities XmlReaderSettings.MaxCharactersFromEntities XmlReaderSettings.MaxCharactersFromEntities Property

Definizione

Ottiene o imposta un valore che indica il numero massimo di caratteri consentito in un documento generato dall'espansione delle entità.Gets or sets a value indicating the maximum allowable number of characters in a document that result from expanding entities.

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

Valore della proprietà

Numero massimo consentito per i caratteri generati dalle entità espanse.The maximum allowable number of characters from expanded entities. Il valore predefinito è 0.The default is 0.

Esempi

Il codice seguente imposta questa proprietà e quindi tenta di analizzare un documento che contiene un'entità che si espande in una dimensione superiore rispetto al limite impostato.The following code sets this property, and then attempts to parse a document that contains an entity that expands to a size greater than the set limit. In uno scenario reale, si imposterebbe questo limite per un valore sufficientemente grande per la gestione di documenti validi, ancora sufficientemente ridotto per limitare la minaccia derivante dal malware dannosi documenti.In a real world scenario, you would set this limit to a value large enough to handle valid documents, yet small enough to limit the threat from malicious documents.

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  

Questo esempio produce il seguente output:This example produces the following output:

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

Commenti

Un valore zero (0) non indica nessun limite per il numero di caratteri risultanti dall'espansione di entità.A zero (0) value means no limits on the number of characters that result from expanding entities. Un valore diverso da zero specifica il numero massimo di caratteri risultanti dall'espansione di entità.A non-zero value specifies the maximum number of characters that can result from expanding entities.

Se il lettore tenta di leggere un documento che contiene le entità in modo che le dimensioni espanse supera il valore di questa proprietà, un XmlException verrà generata.If the reader attempts to read a document that contains entities such that the expanded size will exceed this property, an XmlException will be thrown.

Questa proprietà consente di prevenire attacchi denial of service in cui l'utente malintenzionato invia documenti XML che cerchi di superare i limiti di memoria tramite l'espansione delle entità.This property allows you to mitigate denial of service attacks where the attacker submits XML documents that attempt to exceed memory limits via expanding entities. Limitando i caratteri risultanti dalle entità espanse, è possibile rilevare l'attacco e recuperare in modo affidabile.By limiting the characters that result from expanded entities, you can detect the attack and recover reliably.

Si applica a