2009-08-30 6 views
5

Ho appena letto il seguente nella specifica CLI per quanto riguarda SecurityExceptions su chiamate di metodo:Quando il CLR .NET calcola gli attributi di sicurezza?

Il controllo di sicurezza può verificarsi quando il CIL viene convertito in codice nativo, piuttosto che in fase di esecuzione.

Come gestisce l'implementazione di Microsoft?

Se, ad esempio, solo un certo gruppo di utenti è autorizzato ad accedere ad alcune classi, e ho inserito un attributo di sicurezza per il controllo di questo gruppo.

Se l'utente esegue l'applicazione, viene jitted e probabilmente i controlli di sicurezza vengono eseguiti in quel momento e non in fase di esecuzione.

In tal caso, il jitter memorizza nella cache l'immagine nativa in modo che possa creare problemi se si modifica il gruppo dell'utente in un secondo momento (ovvero l'immagine nativa memorizzata nella cache non riflette le autorizzazioni aggiornate)? Oppure viene eseguito ogni volta che viene eseguito, a meno che non preveda la preinstallazione dell'immagine nativa? Non sono ancora abbastanza sicuro di come la cache dell'immagine nativa funzioni esattamente.

+0

Bella domanda! Starò a guardare per le risposte. :-) –

risposta

2

Qualsiasi immagine jitted è valida solo nello stesso contesto di sicurezza in cui è stata generata.

Questo vale sia per la cache che per gli assembly ngen: ed.

Non appena il caricatore rileva che il contesto di sicurezza corrente è diverso, carica l'immagine IL e JIT l'assieme.

Ecco perché non è possibile salvare un'immagine sul PC e distribuirla a qualcun altro.

Questo vale anche per i gruppi di nucleo .Net. Sono ngen: ed (o posizionati nella coda di ngen) all'installazione per adattarsi al contesto di sicurezza sul computer.

Si può leggere di più su di esso qui: msdn ngen.exe

+0

Grazie! Ora posso dormire di nuovo tranquillo. :) – Botz3000