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