CA5367: Typen mit Zeigerfeldern dürfen nicht serialisiert werden

Eigenschaft Wert
Regel-ID CA5367
Titel Typen mit Zeigerfeldern dürfen nicht serialisiert werden.
Kategorie Security
Fix führt oder führt nicht zur Unterbrechung Nicht unterbrechend
Standardmäßig in .NET 8 aktiviert Nein

Ursache

Zeiger sind nicht typsicher. Dies bedeutet, dass Sie nicht die Richtigkeit des Speichers sicherstellen können, auf den sie zeigen. Daher ist das Serialisieren von Typen mit Zeigerfeldern ein Sicherheitsrisiko, da es einem Angreifer möglicherweise ermöglicht, den Zeiger zu steuern.

Regelbeschreibung

Diese Regel überprüft, ob eine serialisierbare Klasse mit Zeigerfeld oder -Eigenschaft vorhanden ist. Member, die nicht serialisiert werden können, können Zeiger sein, beispielsweise statische Member oder Felder, die mit System.NonSerializedAttribute gekennzeichnet sind.

Behandeln von Verstößen

Verwenden Sie keine Zeigertypen für Member in einer serialisierbaren Klasse, oder Serialisieren Sie nicht die Member, die Zeiger sind.

Wann sollten Warnungen unterdrückt werden?

Riskieren Sie es nicht, Zeiger in serialisierbaren Typen zu verwenden.

Pseudocodebeispiele

Verletzung

using System;

[Serializable()]
unsafe class TestClassA
{
    private int* pointer;
}

Lösung 1

using System;

[Serializable()]
unsafe class TestClassA
{
    private int i;
}

Lösung 2

using System;

[Serializable()]
unsafe class TestClassA
{
    private static int* pointer;
}