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


CA5367: Ne szerializáljon típusok mutatómezőkkel

Tulajdonság Érték
Szabályazonosító CA5367
Cím A típusok nem szerializálása mutatómezőkkel
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

A mutatók nem biztonságosak, ami azt jelenti, hogy nem garantálható a memória helyessége, amelyre mutatnak. A mutatómezőkkel rendelkező típusok szerializálása tehát biztonsági kockázatot jelent, mivel lehetővé teheti, hogy a támadók irányíthassák a mutatót.

Szabály leírása

Ez a szabály ellenőrzi, hogy van-e szerializálható osztály mutatómezővel vagy tulajdonsággal. A szerializálni nem tudó tagok lehetnek mutatók, például statikus tagok vagy a velük System.NonSerializedAttributemegjelölt mezők.

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

Ne használjon mutatótípusokat a szerializálható osztály tagjaihoz, és ne szerializálja a mutatókat tartalmazó tagokat.

Mikor kell letiltani a figyelmeztetéseket?

Ne kockáztasd a mutatók szerializálható típusokban való használatát.

Példák pszeudokódokra

Megsértése

using System;

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

1\. megoldás

using System;

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

2\. megoldás

using System;

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