CA2143: Los métodos transparentes no deben usar peticiones de seguridad

Elemento Valor
RuleId CA2143
Category Microsoft.Security
Cambio importante Problemático

Causa

Un tipo o método transparente se marca mediante declaración con una demanda System.Security.Permissions.SecurityAction.Demand o bien el método llama al método System.Security.CodeAccessPermission.Demand.

Nota

Esta regla está en desuso. Para más información, consulte Reglas en desuso.

Descripción de la regla

El código transparente en seguridad no debería ser responsable de comprobar la seguridad de una operación y, por consiguiente, no debería exigir permisos. El código transparente en seguridad debería utilizar peticiones completas para tomar decisiones de seguridad y el código crítico para la seguridad no debió confiar en el código transparente al realizar la petición completa. Cualquier código que realice comprobaciones de seguridad, como las demandas de seguridad, debe ser crítico para la seguridad.

Cómo corregir infracciones

En general, para corregir una infracción de esta regla, marque el método con el atributo SecuritySafeCriticalAttribute. También puede quitar la demanda.

Cuándo suprimir las advertencias

No suprima las advertencias de esta regla.

Ejemplo

La regla archiva el código siguiente porque un método transparente hace una demanda de seguridad declarativa.

using System;
using System.Security;
using System.Security.Permissions;

namespace TransparencyWarningsDemo
{

    public class TransparentMethodDemandClass
    {
        // CA2142 violation - transparent code using a Demand.  This can be fixed by making the method safe critical.
        [PermissionSet(SecurityAction.Demand, Unrestricted = true)]
        public void TransparentMethod()
        {
        }
    }
}

Consulte también

CA2142: El código transparente no debe protegerse con LinkDemands