Tengo un programa y una arquitectura de complemento simple donde los complementos implementan una interfaz genérica y el programa principal carga todos los complementos que implementan esta interfaz. Es la arquitectura de plugins personalizados más común que he encontrado hasta ahora, así que eso es lo que estoy usando.¿Hay alguna forma de bloquear el acceso de un complemento C# a la aplicación principal C# en un programa?
No estoy usando el MEF de Microsoft y tengo mis razones para no hacerlo. Lo dejo así.
El problema es que cuando se cargan los complementos, no importa cuán "ciegos" sean para el programa principal y sus formularios/clases/etc. todavía puede acceder al System.Windows.Forms.Application
y, por lo tanto, puede obtener acceso a mi aplicación y a sus formularios/métodos/controles/etc. actualmente en ejecución.
No quiero esto. ¿Hay alguna forma de restringir el acceso de un complemento a la aplicación principal?
EDIT: Más información sobre el plugin
Nosotros (mi jefe y yo) estamos discutiendo actualmente lo que tienen que hacer los plugins. Obviamente todos ellos necesitan agregar funcionalidad, pero originalmente decidimos darle acceso a cada complemento al formulario que se está ejecutando actualmente para que pueda agregar controles y eventos directamente al formulario. Esto se basó en la suposición de que solo nosotros, los desarrolladores, los escribiríamos.
Ahora estamos considerando la posibilidad de complementos de terceros y, obviamente, el diseño original tiene casi la misma seguridad que un letrero de "No ingresar" en una puerta abierta sin nadie a su alrededor.
O un cartel de "Take One" que cuelga de un bol de bolos individuales en Halloween.
¿Se puede denegar el complemento si hace referencia a Windows.Form dll? – hungryMind
@hungryMind Si alguien usa el reflejo para acceder a los tipos, es fácil omitir los controles para referencias. Los ataques Stringy omitirán esto. –