Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
| Özellik | Değer |
|---|---|
| Kural Kimliği | CA5366 |
| Başlık | DataSet Read XML için XmlReader Kullan |
| Kategori | Güvenlik |
| Düzeltme bozucu ya da bozmayan olabilir | Kesintisiz |
| .NET 10'da varsayılan olarak etkin | Hayır |
| Geçerli diller | C# ve Visual Basic |
Neden
Belge Türü Tanımı (DTD), xml belgesinin yapısını ve yasal öğelerini ve özniteliklerini tanımlar. Dış kaynaktan bir DTD'ye başvurmak olası Hizmet Reddi (DoS) saldırılarına neden olabilir. Okuyucuların çoğu DTD işlemeyi devre dışı bırakamaz ve System.Xml.XmlReader hariç dış başvuruların yüklenmesini kısıtlayamaz. Xml'yi aşağıdaki yöntemlerden biriyle yüklemek için bu diğer okuyucuların kullanılması bu kuralı tetikler:
Kural açıklaması
System.Data.DataSet kullanarak güvenilmeyen verilerle XML okumak, güvenli bir çözümleyici kullanımı veya DTD işlemesinin devre dışı bırakılmasıyla kısıtlanması gereken tehlikeli dış başvurular yükleyebilir.
İhlalleri düzeltme
XML okumak için XmlReader veya onun türetilmiş sınıflarını kullanın.
Uyarıların ne zaman bastırılması gerekiyor?
Güvenilir bir veri kaynağı ile uğraşırken, bu kuralla ilgili bir uyarıyı bastır.
Uyarıyı gizleme
Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.
#pragma warning disable CA5366
// The code that's violating the rule is on this line.
#pragma warning restore CA5366
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini noneolarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA5366.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.
Sahte kod örnekleri
Ihlal
using System.Data;
using System.IO;
public class ExampleClass
{
public void ExampleMethod()
{
new DataSet().ReadXml(new FileStream("xmlFilename", FileMode.Open));
}
}
Çözüm
using System.Data;
using System.IO;
using System.Xml;
public class ExampleClass
{
public void ExampleMethod()
{
new DataSet().ReadXml(new XmlTextReader(new FileStream("xmlFilename", FileMode.Open)));
}
}