CA2142: El código transparente no se debería proteger con LinkDemands
Nombre de tipo |
TransparentMethodsShouldNotBeProtectedWithLinkDemands |
Identificador de comprobación |
CA2142 |
Categoría |
Microsoft.Security |
Cambio problemático |
Sí |
Motivo
Un método transparente requiere una LinkDemand u otra demanda de seguridad.
Descripción de la regla
Esta regla se desencadena en los métodos transparentes que requieren que las LinkDemand tengan acceso a ellos.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.Como se supone que los métodos transparentes tienen una seguridad neutra, no deberían tomar ninguna decisión de seguridad.Además, el código crítico para la seguridad, que toma las decisiones de seguridad, no debería basarse en el código transparente para haber tomado este tipo de decisión previamente.
Cómo corregir infracciones
Para corregir una infracción de esta regla, quite la petición de vínculo en el método transparente o marque el método con el atributo SecuritySafeCriticalAttribute si está realizando comprobaciones de seguridad, por ejemplo demandas de seguridad.
Cuándo suprimir advertencias
No suprima las advertencias de esta regla.
Ejemplo
En el ejemplo siguiente, la regla desencadena en el método porque este es transparente y se marca con una LinkDemand PermissionSet que contiene LinkDemand.
using System;
using System.Security.Permissions;
namespace TransparencyWarningsDemo
{
public class TransparentMethodsProtectedWithLinkDemandsClass
{
// CA2142 violation - transparent code using a LinkDemand. This can be fixed by removing the LinkDemand
// from the method.
[PermissionSet(SecurityAction.LinkDemand, Unrestricted = true)]
public void TransparentMethod()
{
}
}
}
No suprima las advertencias de esta regla.