2010-12-15 16 views
5

Me gustaría ejecutar un ensamblado .NET de terceros en mi API. Quiero que llame a sus propios métodos y objetos como lo desee, pero le niego el acceso a cualquier cosa que mi API no le dé explícitamente. En particular, si mi API pasa un objeto al código de terceros como IMyObject, no quiero que usen la reflexión o ningún método para elevar ese objeto, digamos MyObject que implementa la interfaz.¿Es posible desactivar la reflexión desde un ensamblado .NET?

¿Hay alguna forma de denegar la posibilidad de utilizar el reflejo en este ensamblaje de terceros? Tengo el control total de todo, así que no necesito evitar que la gente descompile mi ensamblaje, solo abusando de él en tiempo de ejecución.

Respuesta

4

Lo que está buscando es ejecutar un conjunto en una caja de arena. Esto se puede lograr usando CAS (Code Access Security) en .Net.

Así es como funciona. Crea un AppDomain, asigne permisos limitados a él. Por ejemplo, permite mostrar una UI pero no permite usar el Sistema de archivos o Reflection. Luego cargas un ensamblaje y lo dejas funcionar.

.Net 4.0 presenta un nuevo modelo de seguridad. Pero no sé mucho al respecto.

Aquí es algo para empezar:

Discover Techniques for Safely Hosting Untrusted Add-Ins with the .NET Framework 2.0

0

Si la persona que llama está ejecutando 'Confianza total' no hay nada que se pueda hacer. Él siempre tendrá acceso completo a la asamblea.

Lo mejor es ofuscar el ensamblaje. Eso hará que el ensamblaje sea un poco más difícil de volver a diseñar.

+0

Lo sentimos, no me ha entendido. Soy quien llama, y ​​estoy llamando a la asamblea de otra persona. – Clueless

Cuestiones relacionadas