CA2350: Zorg ervoor dat de invoer van DataTable.ReadXml() wordt vertrouwd
Eigenschappen | Weergegeven als |
---|---|
Regel-id | CA2350 |
Titel | Zorg ervoor dat de invoer van DataTable.ReadXml() wordt vertrouwd |
Categorie | Beveiliging |
Oplossing is brekend of niet-brekend | Niet-brekend |
Standaard ingeschakeld in .NET 8 | Nee |
Oorzaak
De DataTable.ReadXml methode is aangeroepen of waarnaar wordt verwezen.
Beschrijving van regel
Bij het deserialiseren van een DataTable met niet-vertrouwde invoer kan een aanvaller schadelijke invoer maken om een Denial of Service-aanval uit te voeren. Er zijn mogelijk onbekende beveiligingsproblemen met het uitvoeren van externe code.
Zie de beveiligingsrichtlijnen voor DataSet en DataTable voor meer informatie.
Schendingen oplossen
- Gebruik, indien mogelijk, Entity Framework in plaats van de DataTable.
- Maak de geserialiseerde gegevens manipulatiebestendig. Na serialisatie tekent u de geserialiseerde gegevens cryptografisch. Voordat deserialisatie wordt gedeserialiseerd, valideert u de cryptografische handtekening. Beveilig de cryptografische sleutel tegen openbaarmaking en ontwerp voor sleutelrotaties.
Wanneer waarschuwingen onderdrukken
Het is veilig om een waarschuwing van deze regel te onderdrukken als:
- U weet dat de invoer wordt vertrouwd. Houd er rekening mee dat de vertrouwensgrens en gegevensstromen van uw toepassing na verloop van tijd kunnen veranderen.
- U hebt een van de voorzorgsmaatregelen genomen in Het oplossen van schendingen.
Een waarschuwing onderdrukken
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.
#pragma warning disable CA2350
// The code that's violating the rule is on this line.
#pragma warning restore CA2350
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none
ervan in op het configuratiebestand.
[*.{cs,vb}]
dotnet_diagnostic.CA2350.severity = none
Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.
Voorbeelden van pseudocode
Schending
using System.Data;
public class ExampleClass
{
public DataTable MyDeserialize(string untrustedXml)
{
DataTable dt = new DataTable();
dt.ReadXml(untrustedXml);
}
}
Gerelateerde regels
CA2351: Zorg ervoor dat de invoer van DataSet.ReadXml() wordt vertrouwd
CA2353: Onveilige gegevensset of gegevenstabel in serialiseerbare type
CA2355: Onveilige gegevensset of gegevenstabel in de grafiek met gedeserialiseerde objecten
CA2356: Onveilige gegevensset of gegevenstabel in grafiek met webdeserialized objecten