XmlReaderSettings.MaxCharactersFromEntities Properti

Definisi

Mendapatkan atau menetapkan nilai yang menunjukkan jumlah karakter maksimum yang diizinkan dalam dokumen yang dihasilkan dari memperluas entitas.

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

Nilai Properti

Jumlah karakter maksimum yang diizinkan dari entitas yang diperluas. Defaultnya adalah 0.

Contoh

Kode berikut mengatur properti ini, lalu mencoba mengurai dokumen yang berisi entitas yang meluas ke ukuran yang lebih besar dari batas yang ditetapkan. Dalam skenario dunia nyata, Anda akan menetapkan batas ini ke nilai yang cukup besar untuk menangani dokumen yang valid, namun cukup kecil untuk membatasi ancaman dari dokumen berbahaya.

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

Contoh ini menghasilkan output berikut:

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

Keterangan

Nilai nol (0) berarti tidak ada batasan jumlah karakter yang dihasilkan dari memperluas entitas. Nilai bukan nol menentukan jumlah maksimum karakter yang dapat dihasilkan dari memperluas entitas.

Jika pembaca mencoba membaca dokumen yang berisi entitas sehingga ukuran yang diperluas akan melebihi properti ini, akan XmlException dilemparkan.

Properti ini memungkinkan Anda untuk mengurangi penolakan serangan layanan di mana penyerang mengirimkan dokumen XML yang mencoba melebihi batas memori melalui entitas yang memperluas. Dengan membatasi karakter yang dihasilkan dari entitas yang diperluas, Anda dapat mendeteksi serangan dan memulihkan dengan andal.

Berlaku untuk