Scrittura di codice indipendente dai tipi verificabile
Aggiornamento: novembre 2007
Il codice indipendente dai tipi è codice che accede ai tipi solo con modalità ben definite e consentite. Dato un riferimento a un oggetto valido, ad esempio, il codice indipendente dai tipi può accedere solo a offset fissi corrispondenti ai membri di campo effettivi. Se tuttavia il codice accede alla memoria a offset arbitrari esterni all'intervallo di memoria appartenente ai campi dell'oggetto esposti in modo pubblico, non sarà indipendente dai tipi.
Durante la compilazione JIT viene eseguito un processo denominato verifica, in base al quale il codice viene esaminato, rilevando se si tratti o meno di codice indipendente dai tipi. Il codice che a seguito della verifica è riconosciuto indipendente dai tipi viene definito codice indipendente dai tipi verificabile. Esiste, infatti, codice che pur essendo indipendente dai tipi non è indipendente dai tipi verificabile, a causa delle limitazioni del processo di verifica o del compilatore. Non tutti i linguaggi sono indipendenti dai tipi e alcuni compilatori di linguaggio, quali Microsoft Visual C++, non sono in grado di generare codice gestito indipendente dai tipi verificabile. Per stabilire se il compilatore di linguaggio utilizzato è in grado di generare codice indipendente dai tipi verificabile, consultare la documentazione del compilatore. Se il compilatore di linguaggio utilizzato genera codice indipendente dai tipi verificabile solo se si evitano determinati costrutti di linguaggio, è possibile utilizzare lo Strumento PEVerify (Peverify.exe) di Windows Software Development Kit (SDK) per stabilire se il codice è indipendente dai tipi verificabile.
È tuttavia possibile tentare l'esecuzione di codice non indipendente dai tipi verificabile, se i criteri di sicurezza consentono al codice di evitare la verifica. Poiché l'indipendenza dai tipi è tuttavia una componente essenziale del meccanismo di isolamento degli assembly nell'ambiente di esecuzione, non è possibile applicare la sicurezza in maniera affidabile se il codice viola le regole dell'indipendenza dai tipi. In base all'impostazione predefinita, l'esecuzione del codice non indipendente dai tipi è consentita solo se il codice ha origine nel computer locale. È quindi necessario che il codice mobile sia indipendente dai tipi.
Vedere anche
Concetti
Nozioni fondamentali sulla protezione dall’accesso di codice
Compilazione di MSIL in codice nativo
Riferimenti
Strumento PEVerify (Peverify.exe)