Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
| Tulajdonság | Érték |
|---|---|
| Szabályazonosító | CA5367 |
| Cím | Ne szerializálja a mutatómezőket tartalmazó típusokat |
| Kategória | Biztonság |
| A javítás romboló vagy nem romboló | Nem törhető |
| Alapértelmezés szerint engedélyezve a .NET 10-ben | Nem |
| Alkalmazandó nyelvek | C# és Visual Basic |
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és
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;
}