Freigeben über


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 zu Unterbrechungen oder bleibt funktionsfähig Untrennbar
Standardmäßig in .NET 10 aktiviert Nein
Anwendbare Sprachen C# und Visual Basic

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.

So beheben Sie Verstöße

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

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;
}