LinkDemand e Wrapper

Un caso di protezione particolare relativo alle pretese di collegamento è stato rafforzato nell'infrastruttura della protezione, 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 protezione come quelli descritti, 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 protezione comporta alcuni costi a livello di prestazioni e la modifica della semantica del controllo di protezione; l'analisi completa dello stack può fornire esito negativo anche qualora il controllo rapido per singolo livello fornisca esito positivo.

Vedere anche

Indicazioni per la generazione di codice protetto