Megosztás a következőn keresztül:


CA2326: Ne használjon TypeNameHandling értékeket a None értéken kívül

Tulajdonság Érték
Szabályazonosító CA2326
Cím Ne használjon TypeNameHandling értékeket a None értéken kívül
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

Ez a szabály akkor aktiválódik, ha a következő feltételek valamelyike teljesül:

Szabály leírása

A nem biztonságos deszerializálók sebezhetők a nem megbízható adatok deszerializálásakor. A támadó úgy módosíthatja a szerializált adatokat, hogy váratlan típusokat is tartalmazzon, hogy kártékony mellékhatásokkal rendelkező objektumokat injektáljon. A nem biztonságos deszerializáló elleni támadás például parancsokat hajthat végre az alapul szolgáló operációs rendszeren, kommunikálhat a hálózaton keresztül, vagy fájlokat törölhet.

Ez a szabály nem a Newtonsoft.Json.TypeNameHandling értékeket Nonekeresi meg. Ha csak akkor szeretné deszerializálni, ha egy Newtonsoft.Json.Serialization.ISerializationBinder van megadva a deszerializált típusok korlátozásához, tiltsa le ezt a szabályt, és engedélyezze helyette a CA2327, a CA2328, a CA2329 és a CA2330 szabályokat.

Szabálysértések kijavítása

Mikor kell letiltani a figyelmeztetéseket?

A szabály figyelmeztetését nyugodtan letilthatja, ha:

  • Tudja, hogy a bemenet megbízható. Vegye figyelembe, hogy az alkalmazás megbízhatósági határa és az adatfolyamok idővel változhatnak.
  • Megtette a szabálysértések elhárításának egyik óvintézkedését.

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 CA2326
// The code that's violating the rule is on this line.
#pragma warning restore CA2326

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

További információ: Kódelemzési figyelmeztetések letiltása.

Példák pszeudokódokra

Megsértése

using Newtonsoft.Json;

public class ExampleClass
{
    public JsonSerializerSettings Settings { get; }

    public ExampleClass()
    {
        Settings = new JsonSerializerSettings();
        Settings.TypeNameHandling = TypeNameHandling.All;    // CA2326 violation.
    }
}
Imports Newtonsoft.Json

Public Class ExampleClass
    Public ReadOnly Property Settings() As JsonSerializerSettings

    Public Sub New()
        Settings = New JsonSerializerSettings()
        Settings.TypeNameHandling = TypeNameHandling.All    ' CA2326 violation.
    End Sub
End Class

Megoldás

using Newtonsoft.Json;

public class ExampleClass
{
    public JsonSerializerSettings Settings { get; }

    public ExampleClass()
    {
        Settings = new JsonSerializerSettings();

        // The default value of Settings.TypeNameHandling is TypeNameHandling.None.
    }
}
Imports Newtonsoft.Json

Public Class ExampleClass
    Public ReadOnly Property Settings() As JsonSerializerSettings

    Public Sub New()
        Settings = New JsonSerializerSettings()

        ' The default value of Settings.TypeNameHandling is TypeNameHandling.None.
    End Sub
End Class

CA2327: Ne használjon nem biztonságos JsonSerializert Gépház

CA2328: Győződjön meg arról, hogy a JsonSerializer Gépház biztonságosak

CA2329: Ne deszerializálja a JsonSerializert nem biztonságos konfiguráció használatával

CA2330: Győződjön meg arról, hogy a JsonSerializer biztonságos konfigurációval rendelkezik a deszerializáláskor