Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
| Tulajdonság | Érték |
|---|---|
| Szabályazonosító | CA5366 |
| Cím | Az XmlReader használata adathalmaz olvasási XML-fájljaihoz |
| Kategória | Biztonság |
| A javítás romboló vagy nem romboló | Nem törhető |
| Alapértelmezés szerint engedélyezve a .NET 10-ben | Nem |
| Alkalmazandó nyelvek | C# és Visual Basic |
Ok
A dokumentumtípus-definíció (DTD) meghatározza egy XML-dokumentum struktúráját és jogi elemeit és attribútumait. Ha egy külső erőforrásból származó DTD-re hivatkozik, lehetséges szolgáltatásmegtagadási (DoS-) támadásokat okozhat. A legtöbb olvasó nem tudja letiltani a DTD-feldolgozást, és nem korlátozhatja a külső hivatkozások betöltését, kivéve a System.Xml.XmlReader. Az alábbi módszerek egyikével ezen más olvasókkal történő XML betöltése aktiválja ezt a szabályt.
Szabály leírása
System.Data.DataSet Ha nem megbízható adatokat tartalmazó XML-t olvas, veszélyes külső hivatkozásokat tölthet be, amelyeket biztonságos feloldóval vagy letiltott DTD-feldolgozással kell korlátozniXmlReader.
Szabálysértések kijavítása
Xml olvasásához használja XmlReader vagy annak származtatott osztályait.
Mikor kell letiltani a figyelmeztetéseket?
A szabály figyelmeztetésének mellőzése megbízható adatforrások kezelésekor.
Figyelmeztetés mellőzése
Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.
#pragma warning disable CA5366
// The code that's violating the rule is on this line.
#pragma warning restore CA5366
Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none a konfigurációs fájlban.
[*.{cs,vb}]
dotnet_diagnostic.CA5366.severity = none
További információ: Kódelemzési figyelmeztetések letiltása.
Példák pszeudokódokra
Megsértés
using System.Data;
using System.IO;
public class ExampleClass
{
public void ExampleMethod()
{
new DataSet().ReadXml(new FileStream("xmlFilename", FileMode.Open));
}
}
Megoldás
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)));
}
}