Condividi tramite


Scrittura di controlli gestiti protetti

Aggiornamento: novembre 2007

I controlli gestiti sono assembly a cui viene fatto riferimento da pagine Web, scaricati nel computer dell'utente e eseguiti su richiesta. Dal punto di vista della protezione dall'accesso di codice, sono disponibili due tipi di controlli gestiti: quelli eseguiti in base ai criteri di protezione predefiniti e quelli che richiedono un livello di attendibilità superiore.

Per scrivere controlli gestiti destinati a essere eseguiti in base ai criteri di protezione predefiniti, è sufficiente conoscere le operazioni consentite da tali criteri per l'area Intranet o Internet. Poiché per l'esecuzione di un controllo gestito non è richiesto un numero di autorizzazioni maggiore di quelle ottenute in base all'area di origine, tale codice viene eseguito normalmente. È importante ricordare che un amministratore o un utente potrebbero decidere di negare al codice che ha origine in Internet o nell'Intranet un tal numero di autorizzazioni. Per eseguire controlli gestiti che richiedono un elevato livello di attendibilità, è necessario che l'amministratore o l'utente regolino i criteri di protezione di ogni computer su cui verrà eseguito il codice.

Quando possibile, è necessario scrivere i controlli gestiti in modo che non richiedano autorizzazioni non concesse, in base all'impostazione predefinita, al codice Internet o Intranet. Per l'area Internet significa che il codice sarà autorizzato solamente a visualizzare SafeTopLevelWindows e SafeSubWindows, che in base al sistema di protezione non possono rappresentare finestre di dialogo, a comunicare solo con il sito di origine e a utilizzare uno spazio di memorizzazione isolato e limitato.

Il codice Intranet dispone di autorizzazioni leggermente più ampie. Per informazioni dettagliate, vedere Criteri di protezione predefiniti. Se è necessario che il controllo effettui l'accesso a file, utilizzi database, raccolga informazioni sul computer client e così via, sarà necessario un maggior livello di attendibilità.

Sviluppo

I controlli ad elevato livello di attendibilità sono progettati per essere eseguiti in base a criteri di protezione meno restrittivi di quelli concessi normalmente in base all'area di origine (Intranet o Internet). La maggior parte delle richieste di autorizzazioni effettuate da librerie protette, quali le classi .NET Framework, esegue elaborazioni dello stack in cui si controlla che tutti i chiamanti dispongano delle autorizzazioni richieste e che le pagine Web, ma non il codice gestito, vengano considerate come chiamanti per motivi di protezione. Le elaborazioni dello stack vengono eseguite per impedire che codice scarsamente attendibile induca codice ad elevata attendibilità all'esecuzione di operazioni dannose.

Poiché i controlli gestiti memorizzati in un browser possono essere manipolati da uno script attivo contenuto in una pagina Web, questa viene considerata come un chiamante e controllata durante un'elaborazione dello stack di protezione per impedire che autori di pagine Web malintenzionati violino codice maggiormente attendibile. Poiché una pagina Web viene considerata come un chiamante, a un controllo dotato di un elevato livello di attendibilità sulla base del nome sicuro o del certificato dell'editore ed eseguito da una pagina Web sarà impedita l'esecuzione di operazioni generalmente non consentite al codice che ha origine nella stessa area della pagina Web. Per ulteriori informazioni su considerazioni relative alla distribuzione, vedere la sezione successiva. Benché possa apparire impossibile riuscire a scrivere controlli ad elevata attendibilità, in realtà anche per uno scenario come questo è contemplata la protezione dall'accesso di codice ed è possibile eseguire selettivamente l'override del comportamento della protezione basata sull'elaborazione dello stack.

È necessario che per i controlli ad elevata attendibilità il metodo Asserts sia utilizzato con cautela per superare le elaborazioni dello stack relative alle autorizzazioni normalmente non concesse ai relativi chiamanti, ovvero alle pagine Web da cui i controlli sono stati eseguiti. Quando si utilizza Asserts, è necessario evitare di esporre API pericolose che potrebbero consentire a pagine Web dannose l'esecuzione di operazioni inopportune. Per questo motivo, il livello di attenzione e di considerazione della problematica relativa alla protezione richiesto nella scrittura di controlli ad elevata attendibilità è analogo a quello indispensabile per scrivere una libreria di classi protetta.

Di seguito sono forniti alcuni suggerimenti per la scrittura di controlli gestiti in modo sicuro:

  • Quando possibile, incapsulare le operazioni che richiedono elevata attendibilità in modo che non vengano esposte dal controllo. In questo modo è possibile effettuare un'asserzione delle autorizzazioni richieste da queste operazioni e le pagine Web che utilizzano il controllo non saranno in grado di fare un utilizzo improprio della funzionalità.

  • Se la struttura del controllo richiede l'esposizione delle operazioni ad elevata attendibilità eseguite, è consigliabile generare una pretesa di autorizzazione di identità relativa al sito o all'URL per garantire che possa essere chiamato solo dalle pagine Web da cui è previsto che venga eseguito.

Distribuzione

È necessario che i controlli ad elevata attendibilità siano sempre dotati di nome sicuro o firmati con un certificato di editore (X.509). In questo modo gli amministratori di criteri possono concedere maggiore attendibilità ai controlli senza ridurre la protezione relativa ad altro codice Intranet o Internet. Una volta che l'assembly è stato firmato, è necessario che l'utente crei un nuovo gruppo di codice associato alle autorizzazioni necessarie e specifichi che solo al codice firmato dalla società o dall'organizzazione dell'utente sarà consentita l'appartenenza al gruppo di codice. Dopo che i criteri di protezione saranno stati modificati in questo senso, il controllo ad elevata attendibilità riceverà autorizzazioni sufficienti per l'esecuzione.

Poiché è necessario modificare i criteri di protezione affinché consentano il funzionamento dei controlli ad elevata attendibilità scaricati, è più agevole distribuire controlli di questo tipo su un'Intranet aziendale, in cui è solitamente presente un amministratore aziendale in grado di distribuire le modifiche descritte su più computer client. Affinché i controlli ad elevata attendibilità possano essere utilizzati su Internet da utenti generici non appartenenti a una società o a un'organizzazione comune, sarà necessaria l'esistenza di una relazione di trust tra l'editore del controllo e l'utente. È in definitiva necessario che l'utente sia in grado di utilizzare agevolmente le istruzioni fornite dall'editore per modificare i criteri e per consentire che il controllo ad elevata attendibilità venga eseguito. In caso contrario, il controllo non potrà essere eseguito.

Vedere anche

Concetti

Introduzione alla protezione dall'accesso di codice

Scrittura di librerie di classi protette

Criteri di protezione predefiniti

Altre risorse

Creazione e utilizzo degli assembly con nome sicuro

Gestione dei criteri di protezione