Pregunta

La falta de reflexión en entornos de alojamiento confianza medio parece causar muchos problemas para muchas aplicaciones web más populares.

  • ¿Por qué es ReflectionPermission desactivado por defecto con confianza medio?
  • ¿Qué riesgo plantean la reflexión en un entorno de alojamiento compartido?

Para tener una referencia al azar, ver MSDN: Cómo utilizar confianza medio en ASP.NET 2.0

¿Fue útil?

Solución

La reflexión permite que el código malicioso para inspeccionar todo tipo de secretos: no tanto de propiedad intelectual (aunque seguro, que también), pero los datos que deben estar privada y segura, al igual que las cadenas de conexión, contraseñas, datos de cuentas bancarias, etc ..

Por supuesto, muchos programas de exponer estos datos como una cuestión de rutina a través de vectores incluso más comprometida, con facilidad, pero no hay razón para aumentar la superficie de ataque de una aplicación.

Editado para traer un poco de la conversación a partir de los comentarios:

Es probablemente cierto que el riesgo real es el acceso sin restricciones del sistema de archivos, que es lo que convierte a la reflexión en un peligro real. Si un mal actor puede obtener un conjunto (o algo que se compila en una asamblea) en el directorio virtual, estás en problemas si tienen permiso reflexión. (Por supuesto, si esto sucede, hay otros problemas potenciales, así, pero que no deben descartar esta vulnerabilidad en particular).

En un entorno de alojamiento compartido que es sólo más difícil de prevenir, aunque ciertamente no es imposible. Tal vez sea esta pregunta vale la publicación cruzada a ServerFault para ver lo que la buena gente de allí tienen que decir.

Otros consejos

nunca he encontrado nada 'malo' que el usuario será capaz de hacer uso de la reflexión. La gente se asuste porque usted es capaz de llamar a los métodos que están marcados como privados o protegidos, pero por lo que he visto, ninguno de ellos imponen un riesgo real.

Lo más probable es que al menos en parte, una técnica de ventas para llegar a pagar por (semi) de alojamiento dedicado:)

He encontrado el siguiente artículo de MSDN sobre este tema:

Consideraciones de seguridad para la reflexión

La respuesta de Jeff Este artículo de eco:

  

Reflexión proporciona la capacidad de   obtener información sobre los tipos y   miembros, ya los miembros de acceso.   Acceso a los miembros que no son públicas podrían   crear un riesgo de seguridad. Por lo tanto,   código que tiene acceso a los miembros que no son públicas   requiere ReflectionPermission con el   banderas apropiadas.

Sin embargo, no creo que este riesgo puede ser explotado entre las cuentas de alojamiento del cliente. Parece que esto sólo representaría un riesgo personal. Por ejemplo, utilizando la reflexión pude explorar mis propias asambleas en mi entorno de alojamiento. Otros clientes, sin embargo, no podían utilizar la reflexión para explorar asambleas. Sólo podían explorar su asambleas.

Esto puede suponer un problema para una única aplicación web que involucra múltiples equipos de desarrollo. Un equipo de desarrollo podría utilizar la reflexión para explorar las asambleas de otro equipo de desarrollo.

Sin embargo, este es un escenario poco común para un entorno de alojamiento compartido. La mayoría de los sitios de alojamiento web compartido implican un equipo muy pequeño que tienen acceso completo a todos el código. En otras palabras, no hay secretos. Mientras el conjunto está a salvo de otros clientes de alojamiento compartido, entonces no es un problema.

Activación de reflexión no debería plantear ningún riesgo para la mayoría de alojamiento compartido de aplicaciones web:

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

Por favor, corríjanme si me equivoco.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top