Compartir a través de


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

Nombre de tipo

TransparentMethodsShouldNotDemand

Identificador de comprobación

CA2143

Categoría

Microsoft.Security

Cambio problemático

Motivo

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

Descripción de la regla

El código transparente para la seguridad no debe ser responsable de comprobar la seguridad de una operación y, por tanto, no debe pedir 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, debería 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 petición.

Cuándo suprimir advertencias

No suprima las advertencias de esta regla.

Ejemplo

La regla se desencadena en 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()
        {
        }
    }
}

Vea también

Referencia

CA2142: El código transparente no se debería proteger con LinkDemands