¿La función de compilación de Closures reduce la seguridad de las variables de los miembros?

4

Basado en esta discusión , los cierres en C # promueven variables privadas a variables públicas en tiempo de compilación.

Supongamos que se implementó un cierre en una cadena de nombre de usuario o contraseña. ¿Habría algún problema de seguridad con esto en tiempo de ejecución? ¿Se trata de un problema en otro idioma?

Si es así, ¿hay alguna manera de evitar esto (a través de atributos)?

    
pregunta random65537 24.01.2011 - 06:50
fuente

1 respuesta

5

A pesar de la promoción de la visibilidad, los cierres no presentan ningún problema de seguridad nuevo.

Esto se debe a la sencilla razón de que la visibilidad (es decir, privada / pública) no es un mecanismo de seguridad en primer lugar.
Solo porque marcó su campo de contraseña como private , no significa que no sea accesible. No se puede acceder a , sino solo al código que se comporta bien.
Todavía es fácilmente accesible en código, por ejemplo. a través de la reflexión. (Por supuesto, los consumidores de su clase no deberían hacer eso ...)

Y eso es incluso sin entrar en cosas como depuración, inspección de memoria, etc ...

Entonces, como dije, no afecta el nivel de seguridad. Necesitaría proteger ese campo de Contraseña, pero tendría que hacerlo de todos modos.
(Sugerencia: almacene las contraseñas como SecureString en lugar de cadenas ...)

    
respondido por el AviD 24.01.2011 - 07:00
fuente

Lea otras preguntas en las etiquetas