La funzionalità del compilatore di Closures riduce la sicurezza delle variabili membro?

4

Basato su questa discussione , chiusure in C # promuovono variabili private a variabili pubbliche in fase di compilazione.

Supponiamo che una chiusura sia stata implementata su una stringa di nome utente o password. Ci sarebbe qualche problema di sicurezza con questo in fase di esecuzione? Si tratta di un problema in qualsiasi altra lingua?

Se è così, c'è un modo per impedirlo (tramite attributi)?

    
posta random65537 24.01.2011 - 06:50
fonte

1 risposta

5

Nonostante la promozione della visibilità, Closures non presenta alcun nuovo problema di sicurezza.

Questo è dovuto al semplice motivo che la visibilità (cioè privata / pubblica) è non un meccanismo di sicurezza in primo luogo.
Solo perché hai contrassegnato il campo della password come private , vuol dire che non è accessibile. È non accessibile, ma solo per il codice che si comporta bene.
È ancora facilmente accessibile nel codice, ad es. via riflessione. (Ovviamente, i consumatori della tua classe non dovrebbero farlo ...)

E questo è anche senza andare in cose come il debug, l'ispezione della memoria, ecc ...

Quindi, come ho detto, non influenza il livello di sicurezza. Avresti bisogno di proteggere quel campo Password, ma avresti bisogno di farlo comunque.
(Suggerimento: memorizza le password come SecureString invece di stringhe ...)

    
risposta data 24.01.2011 - 07:00
fonte

Leggi altre domande sui tag