Condividi tramite


Gli assembly Security Transparent non possono contenere codice di sicurezza critico

Aggiornamento: novembre 2007

TypeName

SecurityTransparentAssembliesShouldNotContainSecurityCriticalCode

CheckId

CA2127

Categoria

Microsoft.Security

Breaking Change

Breaking

Causa

Gli assembly interamente Secury Transparent non possono contenere codice di sicurezza critico.

Descrizione della regola

Questa regola verifica l'eventuale presenza di annotazioni Security Critical a livello di tipo, di campo e di metodo all'interno degli assembly interamente Security Transparent. È utile in quanto contrassegna codice esistente in un assembly interamente Security Transparent. Il codice contenuto in un assembly interamente Security Transparent genera un'eccezione di sicurezza o un comportamento imprevisto in fase di esecuzione.

Con .NET Framework 2.0 è stata introdotta una funzionalità denominata trasparenza. I singoli metodi, campi, interfacce, classi e tipi possono essere o trasparenti o critici.

Il codice trasparente non ha accesso a privilegi di sicurezza avanzati. Pertanto, qualsiasi autorizzazione concessa o richiesta viene automaticamente passata tramite il codice al chiamante o all'AppDomain host. Sono esempi di elevazioni le asserzioni, le pretese LinkDemand, l'attributo SuppressUnmanagedCode e il codice unsafe.

Un assembly può essere interamente Security Transparent, interamente Security Critical o una combinazione di Security Transparent e Security Critical.

Per contrassegnare un assembly come interamente Security Transparent, aggiungere l'attributo a livello di assembly:

 [assembly:System.Security.SecurityTransparent]

Per contrassegnare un assembly come interamente Security Critical, aggiungere l'attributo a livello di assembly seguente:

[assembly:System.Security.SecurityCritical(System.Security.SecurityCriticalScope.Everything)]

Per contrassegnare un assembly come una combinazione di Security Transparent e Security Critical, aggiungere l'attributo a livello di assembly seguente:

 [assembly:System.Security.SecurityCritical]

Gli assembly interamente Secury Critical non possono contenere codice di sicurezza trasparente e gli assembly interamente Secury Transparent non possono contenere codice di sicurezza critico.

Correzione di violazioni

Per risolvere il problema, contrassegnare l'assembly come una combinazione di Security Transparent e Security Critical o rimuovere l'attributo dal codice contrassegnato.

Esclusione di avvisi

Non sopprimere un messaggio da questa regola.