Nota
L'accés a aquesta pàgina requereix autorització. Podeu provar d'iniciar la sessió o de canviar els directoris.
L'accés a aquesta pàgina requereix autorització. Podeu provar de canviar els directoris.
| Propiedad | Valor |
|---|---|
| Identificador de la regla | CA5367 |
| Título | No serializar los tipos con campos de puntero |
| Categoría | Seguridad |
| El arreglo es problemático o no problemático | Sin interrupción |
| Habilitado de forma predeterminada en .NET 10 | No |
| Idiomas aplicables | C# y Visual Basic |
Causa
Los punteros no son seguros tipográficamente, lo cual significa que no se puede garantizar con certeza la correctitud de la memoria a la que apuntan. Por lo tanto, la serialización de tipos con campos de puntero es un riesgo para la seguridad, ya que puede permitir que un atacante controle el puntero.
Descripción de la regla
Esta regla comprueba si hay una clase serializable con un campo o una propiedad de puntero. Los miembros que no se pueden serializar pueden ser punteros, como los miembros estáticos o los campos marcados con System.NonSerializedAttribute.
Cómo corregir infracciones
No use tipos de puntero para miembros en una clase serializable o no serialice los miembros que son punteros.
Cuándo suprimir las advertencias
No corra el riesgo de usar punteros en tipos serializables.
Ejemplos de pseudocódigo
Infracción
using System;
[Serializable()]
unsafe class TestClassA
{
private int* pointer;
}
Solución 1
using System;
[Serializable()]
unsafe class TestClassA
{
private int i;
}
Solución 2
using System;
[Serializable()]
unsafe class TestClassA
{
private static int* pointer;
}