CA2143: I metodi Transparent non devono utilizzare SecurityDemand
Articolo | Valore |
---|---|
ID regola | CA2143 |
Category | Microsoft.Security |
Modifica | Interruzione |
Causa
Un tipo o un metodo trasparente viene contrassegnato in modo dichiarativo con una System.Security.Permissions.SecurityAction.Demand
richiesta o il metodo chiama il System.Security.CodeAccessPermission.Demand metodo .
Nota
Questa regola è stata deprecata. Per altre informazioni, vedere Regole deprecate.
Descrizione regola
Il codice trasparente per la sicurezza non deve essere responsabile della verifica della sicurezza di un'operazione, pertanto non deve richiedere autorizzazioni. Il codice trasparente per la sicurezza deve usare 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, ad esempio le richieste di sicurezza, deve essere invece critico.
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.
Quando eliminare gli avvisi
Non escludere un avviso da questa regola.
Esempio
I file di regola nel codice seguente perché un metodo trasparente rende 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()
{
}
}
}
Vedi anche
CA2142: Il codice Transparent non deve essere protetto con LinkDemand
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per