2009-05-04 7 views
7

.NET code access security ha existido por mucho tiempo, sin embargo, parece que casi nunca se usa en el mundo real.. Seguridad de acceso al código .NET: ¿por qué casi nunca se usa?

A mi modo de ver, esto parece un excelente concepto, y uno que no había visto antes de .NET. (¿Existe en otros idiomas?)

Me gustaría saber si alguien está utilizándolo proactivamente en sus proyectos y por qué?

Para aquellos que no lo usan, ¿existen razones válidas más allá de "no tenemos un presupuesto para la seguridad" o "no tengo tiempo para aprender la seguridad"?

¿Hasta qué punto es eficaz para alcanzar sus objetivos?

+0

Buena pregunta. Estoy de acuerdo (según mi experiencia) en que apenas se usa, pero no pude decir por qué. Sin embargo, la curva de aprendizaje ciertamente es un factor. Tal vez la mayoría de los desarrolladores nunca han encontrado un uso para ello? Ciertamente no me he desarrollado durante muchos años en VB.NET y C# ... – Noldorin

Respuesta

4

La verdadera razón es que Microsoft no dio ninguna guía y mejores prácticas sobre cómo usar la seguridad de acceso de código. Entonces realmente nunca despegó. Nunca explicaron por qué querrías proteger tu código. ¿Qué sucede cuando ocurre una excepción? ¿Cómo se recupera? Creo que esos son los principales problemas.

No confunda esto con la seguridad de acceso a datos que ha proporcionado orientación y mejores prácticas.

+0

No entiendo por qué "qué sucede cuando se produce una excepción" tiene algo que ver con CAS, ¿estaba pensando en las cosas de ReliabilityContract? ? –

+0

No se lanza una excepción cuando no tiene acceso a algún código. ¿Qué sucede cuando el código se basa en ese bloque de código? ¿Cómo manejas esa situación? –

8

No se usa mucho porque para un desarrollador final (es decir, no un desarrollador que crea componentes para que otros desarrolladores lo usen), la mayoría de las veces, estamos apuntando a un entorno de plena confianza, o dirigidos a tales un ambiente es una opción. O el código se ejecutará en nuestro servidor web, o en máquinas cliente propiedad de nuestra empresa. En cualquier caso, ejecutar el código con plena confianza no es un problema: la entidad que ejecuta el código confía en el desarrollador. El único caso que conozco de dónde se usa CAS es en un entorno como Sharepoint, y la mitad del tiempo, simplemente hacemos GAC en esas asambleas para la plena confianza de todos modos.

Entonces, ¿por qué no gastamos el esfuerzo de aprender a escribir nuestro código para un escenario parcialmente confiable? Bueno, para ser honesto, funciona con plena confianza, y si no estás en un escenario donde el ejecutor no puede confiar en el escritor, no es necesario, y mis clientes no me pagan por la arquitectura de torre de marfil. pagarme por ejecutar un código que satisfaga las necesidades de su negocio. En la mayoría de los casos, CAS no es obligatorio.

+0

¿Está diciendo que todos los escritorios de los usuarios finales se ejecutan con privilegios administrativos en estas empresas? – JonnyBoats

+0

No. La plena confianza no significa que se ejecuta como administrador. La plena confianza significa que se ejecuta con los privilegios completos del usuario que lo ejecuta. –

+0

CAS trata de proteger al usuario que ejecuta la aplicación desde la aplicación. Una aplicación de plena confianza que se ejecuta como un usuario normal no puede hacer cosas de administración. –

Cuestiones relacionadas