Compartir a través de


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

TypeName

TransparentMethodsShouldNotDemand

Identificador de comprobación

CA2143

Categoría

Microsoft.Security

Cambio problemático

Problemático

Motivo

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

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, 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