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.