Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
| 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;
}