CA5367: No serializar los tipos con campos de puntero
Propiedad | Value |
---|---|
Identificador de la regla | CA5367 |
Título | No serializar los tipos con campos de puntero |
Categoría | Seguridad |
La corrección interrumpe o no interrumpe | Poco problemático |
Habilitado de forma predeterminada en .NET 9 | No |
Causa
Los punteros no tienen seguridad de tipos, lo cual significa que no se puede garantizar la exactitud 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 una propiedad o un campo de puntero. Los miembros que no se pueden serializar pueden ser un puntero, 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 asuma 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;
}