Codice type-safe e protezione

Il codice type-safe accede solo alle posizioni di memoria cui è autorizzato ad accedere. Nel presente contesto, per "type-safe" si intende unicamente sicurezza dei tipi rispetto all'accesso della memoria ed è necessario non confonderlo con il concetto di "type-safe" in senso più ampio. Il codice type-safe, ad esempio, non è in grado di leggere i valori dei campi privati di un altro oggetto. Esso accede ai tipi solo con modalità ben definite e consentite.

Durante la compilazione JIT, un processo di verifica facoltativo esamina i metadati e il linguaggio intermedio Microsoft (MSIL, Microsoft Intermediate Language) di un metodo da sottoporre a compilazione JIT in codice macchina nativo per verificare che siano type-safe. Questo processo viene omesso se il codice dispone dell'autorizzazione a evitare la verifica. Per ulteriori informazioni sulla verifica, vedere Compilazione di MSIL in codice nativo.

Sebbene la verifica della condizione type-safe non sia obbligatoria per l'esecuzione del codice gestito, la condizione type-safe ha un ruolo fondamentale nell'applicazione della protezione e nell'isolamento degli assembly. Quando il codice è type-safe, Common Language Runtime è in grado di isolare totalmente gli assembly l'uno dall'altro. L'isolamento aiuta a garantire che gli assembly non possano influire negativamente l'uno sull'altro e accresce l'affidabilità dell'applicazione. I componenti type-safe possono essere eseguiti in tutta sicurezza nello stesso processo anche se la fiducia è concessa a livelli differenti. Quando il codice non è type-safe, è possibile che si verifichino effetti collaterali indesiderati. Il runtime, ad esempio, non è in grado di impedire al codice non type-safe di effettuare chiamate a codice nativo (non gestito) e di eseguire operazioni dannose. Quando il codice è type-safe, il meccanismo di applicazione della protezione del runtime garantisce che tale codice non acceda a codice nativo se non dispone di autorizzazioni specifiche. Per consentirne l'esecuzione, è necessario concedere a tutto il codice che non è type-safe l'autorizzazione SecurityPermission con il membro di enumerazione SkipVerification passato.

Vedere anche

Concetti principali sulla protezione | Scrittura di codice type-safe verificabile