CA5370: Az XmlReader használata az olvasó ellenőrzéséhez
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA5370 |
Cím | Az XmlReader használata az olvasó ellenőrzéséhez |
Kategória | Biztonság |
A javítás kompatibilitástörő vagy nem törik | Nem törés |
Alapértelmezés szerint engedélyezve a .NET 8-ban | Nem |
Ok
Ha a nem megbízható XML-bemenetet objektum nélkül XmlReader
példányosított osztálysal XmlValidatingReader
ellenőrzi, az szolgáltatásmegtagadáshoz, információfeltáráshoz és kiszolgálóoldali kérelemhamisításhoz vezethet. Ezeket a támadásokat nem megbízható DTD- és XML-sémafeldolgozás teszi lehetővé, amely lehetővé teszi XML-bombák és rosszindulatú külső entitások XML-fájlba való felvételét. Csak a XmlReader
DTD letiltása lehetséges. Beágyazott XML-sémafeldolgozás, ahogy XmlReader
a ProhibitDtd
tulajdonság alapértelmezés ProcessInlineSchema
szerint be van állítva false
a .NET-keretrendszer 4.0-s verziótól kezdve.
Szabály leírása
A nem megbízható DTD- és XML-sémák feldolgozása veszélyes külső hivatkozások betöltését teheti lehetővé. Ez a veszélyes betöltés egy biztonságos feloldóval vagy a DTD és az XML beágyazott sémafeldolgozás letiltásával korlátozható XmlReader
. Ez a szabály észleli az osztályt XmlValidatingReader
XmlReader
konstruktorparaméter nélkül használó kódot.
Szabálysértések kijavítása
- Használat
XmlValidatingReader(XmlReader)
a következővelProhibitDtd
ésProcessInlineSchema
a tulajdonságok beállítása:false
. - A .NET-keretrendszer 2.0-tól
XmlValidatingReader
kezdődően elavultnak számít. Az érvényesítő olvasót példányosíthatja a következővel XmlReader.Create: .
Mikor kell letiltani a figyelmeztetéseket?
Ezt a figyelmeztetést letilthatja, ha a XmlValidatingReader
rendszer mindig megbízható forrásból származó XML ellenőrzésére használja, ezért nem módosítható.
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 CA5370
// The code that's violating the rule is on this line.
#pragma warning restore CA5370
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.CA5370.severity = none
További információ: Kódelemzési figyelmeztetések letiltása.
Példák pszeudokódokra
Megsértése
Az alábbi pszeudokód-minta a szabály által észlelt mintát mutatja be.
Az első paraméter XmlValidatingReader.XmlValidatingReader()
típusa nem XmlReader
.
using System;
using System.IO;
using System.Xml;
...
public void TestMethod(Stream xmlFragment, XmlNodeType fragType, XmlParserContext context)
{
var obj = new XmlValidatingReader(xmlFragment, fragType, context);
}
Megoldás
using System;
using System.Xml;
...
public void TestMethod(XmlReader xmlReader)
{
var obj = new XmlValidatingReader(xmlReader);
}
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: