Delen via


CA2356: Onveilige gegevensset of gegevenstabeltype in grafiek met webdeserialized objecten

Eigenschappen Weergegeven als
Regel-id CA2356
Titel Onveilige gegevensset of gegevenstabeltype in grafiek met webdeserialized objecten
Categorie Beveiliging
Oplossing is brekend of niet-brekend Niet-brekend
Standaard ingeschakeld in .NET 8 Nee

Oorzaak

Een methode met een System.Web.Services.WebMethodAttribute of System.ServiceModel.OperationContractAttribute een parameter die kan verwijzen naar een DataSet of DataTable.

Deze regel maakt gebruik van een andere benadering van een vergelijkbare regel, CA2355: Onveilige gegevensset of gegevenstabel in de deserialized objectgrafiek en vindt verschillende waarschuwingen.

Beschrijving van regel

Bij het deserialiseren van niet-vertrouwde invoer en de deserialized objectgrafiek een DataSet of DataTablebevat, kan een aanvaller een schadelijke nettolading 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 DataSet van en 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 CA2356
// The code that's violating the rule is on this line.
#pragma warning restore CA2356

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.CA2356.severity = none

Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.

Voorbeelden van pseudocode

Schending

using System;
using System.Data;
using System.Web.Services;

[WebService(Namespace = "http://contoso.example.com/")]
public class MyService : WebService
{
    [WebMethod]
    public string MyWebMethod(DataTable dataTable)
    {
        return null;
    }
}

CA2350: Zorg ervoor dat de invoer van DataTable.ReadXml() wordt vertrouwd

CA2351: Zorg ervoor dat de invoer van DataSet.ReadXml() wordt vertrouwd

CA2352: Onveilige gegevensset of gegevenstabel in serializeerbaar type kan kwetsbaar zijn voor aanvallen op uitvoering van externe code

CA2353: Onveilige gegevensset of gegevenstabel in serialiseerbare type

CA2354: Onveilige gegevensset of gegevenstabel in de deserialized objectgrafiek kan kwetsbaar zijn voor aanvallen op het uitvoeren van externe code

CA2355: Onveilige gegevensset of gegevenstabel in de grafiek met gedeserialiseerde objecten

CA2361: Zorg ervoor dat de invoer van DataSet.ReadXml() wordt vertrouwd

CA2362: Onveilige gegevensset of gegevenstabel in automatisch gegenereerd serializeerbaar type kan kwetsbaar zijn voor aanvallen op uitvoering van externe code