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;
}
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: