XmlReaderSettings.MaxCharactersFromEntities Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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.