CA2143: I metodi Transparent non devono utilizzare SecurityDemand
TypeName |
TransparentMethodsShouldNotDemand |
CheckId |
CA2143 |
Category |
Microsoft.Security |
Breaking Change |
Breaking |
Causa
Il metodo o il tipo Trasparent è contrassegnato in modo dichiarativo da una richiesta System.Security.Permissions.SecurityAction.Demand oppure il metodo chiama il metodo CodeAccessPermission.Demand.
Descrizione della regola
Il codice SecurityTransparent non deve essere responsabile della verifica della sicurezza di un'operazione e quindi non deve richiedere autorizzazioni.Il codice trasparente per la sicurezza deve utilizzare richieste complete per prendere decisioni relative alla sicurezza e il codice critico per la sicurezza non deve basarsi sul codice trasparente per l'esecuzione della richiesta completa.Qualsiasi codice che esegue controlli di sicurezza, come ad esempio le richieste di sicurezza, devono essere invece SafeCritical.
Come correggere le violazioni
In generale, per correggere una violazione di questa regola, contrassegnare il metodo con l'attributo SecuritySafeCriticalAttribute.È anche possibile rimuovere la richiesta.
Esclusione di avvisi
Non escludere un avviso da questa regola.
Esempio
I file delle regole nel seguente codice perché un metodo trasparente fa una richiesta di sicurezza dichiarativa.
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()
{
}
}
}
Vedere anche
Riferimenti
CA2142: Il codice Transparent non deve essere protetto con LinkDemand