Share via


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