Richieste di collegamento e wrapper

Un caso di sicurezza particolare relativo alle pretese di collegamento è stato rafforzato nell'infrastruttura della sicurezza, ma rimane una fonte di possibile debolezza del codice.

Se da codice totalmente attendibile viene chiamata una proprietà, un evento o un metodo protetto da una LinkDemand, la chiamata ha esito positivo se viene eseguito il controllo dell'autorizzazione LinkDemand per il chiamante. Se, inoltre, nel codice totalmente attendibile è esposta una classe che accetta il nome di una proprietà e chiama la relativa funzione di accesso get tramite reflection, la chiamata alla funzione di accesso get riesce anche se il codice dell'utente non dispone del diritto ad accedere alla proprietà; questo avviene perché LinkDemand verifica solo il chiamante immediato, che è rappresentato dal codice totalmente attendibile. In pratica, dal codice totalmente attendibile viene eseguita una chiamata con privilegi per conto del codice dell'utente senza verificare che quest'ultimo disponga dei diritti necessari per eseguire la chiamata.

Per impedire problemi accidentali della sicurezza, Common Language Runtime estende il controllo in una pretesa di percorso stack completo su tutte le chiamate indirette a un metodo, un costruttore, una proprietà o un evento protetto da una LinkDemand. Questo tipo di sicurezza comporta alcuni costi a livello di prestazioni e la modifica della semantica del controllo di sicurezza; l'analisi completa dello stack può fornire esito negativo anche qualora il controllo rapido per singolo livello fornisca esito positivo.

Nota

In .NET Framework 4 il codice parzialmente attendibile è stato ridefinito come codice trasparente.Il modello di trasparenza consente di creare una barriera tra codice autorizzato a eseguire operazioni privilegiate (codice critico), ad esempio chiamare codice nativo, e codice che non dispone di tale autorizzazione (codice trasparente).La trasparenza sostituisce l'utilizzo di LinkDemand per l'attendibilità totale per l'identificazione di codice completamente attendibile con SecurityCriticalAttribute.Per ulteriori informazioni su questa e altre modifiche, vedere Modifiche della sicurezza in .NET Framework.

Vedere anche

Altre risorse

Linee guida per la generazione di codice sicuro