CA2142: El código transparente no debe protegerse con LinkDemands
Elemento | Valor |
---|---|
RuleId | CA2142 |
Category | Microsoft.Security |
Cambio importante | Problemático |
Causa
Un método transparente requiere SecurityAction, o cualquier otra demanda de seguridad.
Nota
Esta regla está en desuso. Para más información, consulte Reglas en desuso.
Descripción de la regla
Esta regla se desencadena en los métodos transparentes que requieren que LinkDemands accedan a ellos. 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. Como se supone que los métodos transparentes son neutrales, en lo que a seguridad se refiere, no deben tomar ninguna decisión de seguridad. Además, el código crítico seguro, que es el que toma decisiones de seguridad, no debe depender del código transparente para que haya tomado previamente dicha decisión.
Cómo corregir infracciones
Para corregir una infracción de esta regla, quite la demanda de vínculo en el método transparente o marque el método con el atributo SecuritySafeCriticalAttribute si realiza comprobaciones de seguridad, como las demandas de seguridad.
Cuándo suprimir las advertencias
No suprima las advertencias de esta regla.
Ejemplo
En el ejemplo siguiente, la regla se activa en el método porque este es transparente y está marcado con un LinkDemand PermissionSet que contiene SecurityAction.
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.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de