XmlReaderSettings.MaxCharactersFromEntities Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene o imposta un valore che indica il numero massimo di caratteri consentito in un documento generato dall'espansione delle entità.
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. Il valore predefinito è 0.
Esempio
Il codice seguente imposta questa proprietà e quindi tenta di analizzare un documento contenente un'entità che si espande a una dimensione maggiore del limite impostato. In uno scenario reale, si imposta questo limite su un valore sufficiente per gestire documenti validi, ma abbastanza piccolo per limitare la minaccia da documenti dannosi.
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
Nell'esempio viene prodotto l'output seguente:
There is an error in XML document (MaxCharactersFromEntities, ).
Commenti
Un valore zero (0) indica che non è possibile limitare il numero di caratteri risultanti dall'espansione delle entità. Un valore diverso da zero specifica il numero massimo di caratteri che possono risultare da entità di espansione.
Se il lettore tenta di leggere un documento contenente entità in modo che le dimensioni espanse superino questa proprietà, verrà generata una XmlException proprietà.
Questa proprietà consente di attenuare gli attacchi denial of service in cui l'utente malintenzionato invia documenti XML che tentano di superare i limiti di memoria tramite entità di espansione. Limitando i caratteri risultanti da entità espanse, è possibile rilevare l'attacco e recuperare in modo affidabile.