Domanda

La mancanza di riflessione negli ambienti di hosting Medium Trust sembra farlo causare molti problemi per molte applicazioni web popolari.

  • Perché è ReflectionPermission disabilitato per impostazione predefinita con Medium Trust?
  • Che rischio comporta la riflessione in un ambiente di hosting condiviso?

Per riferimenti casuali, cfr MSDN:Come utilizzare l'attendibilità media in ASP.NET 2.0

È stato utile?

Soluzione

Riflessione permette codice maligno di ispezionare tutti i tipi di segreti: non tanto di proprietà intellettuale (anche se certo, anche questo), ma i dati che dovrebbero essere privato e sicuro, come stringhe di connessione, le password, i dati di conto bancario, ecc ..

Naturalmente, molti programmi di esporre questi dati come una questione di corso attraverso ancora più facilmente compromessi-vettori, ma non c'è alcun motivo per aumentare la superficie di attacco di un'applicazione.

A cura di portare un po 'della conversazione fino dai commenti:

E 'probabilmente vero che il rischio reale è senza restrizioni l'accesso ai file di sistema, che è ciò che trasforma la riflessione in un vero e proprio pericolo. Se un cattivo attore può ottenere un assemblaggio (o qualcosa che viene compilato in un assembly) nella directory virtuale, sei nei guai se hanno il permesso di riflessione. (Naturalmente, se questo accade, ci sono altri problemi potenziali pure, ma che non devono scontare questa particolare vulnerabilità.)

In un ambiente di hosting condiviso che è solo più difficile da prevenire, anche se certamente non è impossibile. Forse è a questa domanda vale cross-posting a ServerFault di vedere ciò che la brava gente lì hanno da dire.

Altri suggerimenti

Non ho mai trovato nulla di "cattivo" che un utente possa fare utilizzando la riflessione.Le persone si spaventano perché puoi chiamare metodi contrassegnati come privati ​​o protetti, ma da quello che ho visto nessuno di loro impone alcun rischio reale.

Molto probabilmente, si tratta almeno in parte di una tecnica di vendita per farti sborsare per un hosting (semi) dedicato :)

Ho trovato il seguente articolo di MSDN su questo argomento:

Considerazioni di sicurezza per la riflessione

La risposta di Jeff Questo articolo di eco:

  

Riflessione offre la possibilità di   ottenere informazioni sui tipi e   membri, e per accedere ai membri.   Accesso ai membri non pubblici potrebbe   creare un rischio per la sicurezza. Perciò,   codice che accede membri non pubblici   richiede ReflectionPermission con la   flag appropriati.

Tuttavia, non credo che questo rischio può essere sfruttata da un account di hosting del cliente. Sembra questo porrebbe solo un rischio personale. Ad esempio, utilizzando riflessione ho potuto esplorare le mie assemblee nel mio ambiente di hosting. Altri clienti, tuttavia, non hanno potuto utilizzare la riflessione per esplorare i miei assemblee. Potevano solo esplorare loro assemblee.

Questo potrebbe rappresentare un problema per una singola applicazione web che coinvolge più team di sviluppo. Un team di sviluppo potrebbe usare riflessione per esplorare le assemblee di un altro team di sviluppo.

Tuttavia, questo è uno scenario di rara per un ambiente di hosting condiviso. La maggior parte condivise siti web hosting coinvolgono una piccola squadra che hanno pieno accesso a tutti il codice. In altre parole, non ci sono segreti. Fino a quando il gruppo è al sicuro da altri clienti di hosting condiviso, allora non è un problema.

L'attivazione di riflessione non dovrebbe porre alcun rischio per la maggior parte hosting condiviso applicazioni web:

<IPermission class="ReflectionPermission" version="1" Flags="RestrictedMemberAccess"/>

Si prega di correggermi se sbaglio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top