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