Pregunta

¿Cuál es la forma más fácil de cargar hasta un montaje, una instancia de una clase de ella, pero lo hacen de una manera privilegios que el montaje ha limitado (sandboxed)? El código no debe ser capaz de comunicarse a través de la red, escribir en el sistema de archivos, o ejecutar procesos.

Actualizar Me tropecé con Assembly.LoadFrom (cadena assemblyFile, Evidencia securityEvidence) ¿Puede ser usado en absoluto? No estoy seguro que en virtud de esta evidencia cosa.

¿Fue útil?

Solución

Es necesario cargarlo en su propia dominio de aplicación .

Aquí es un que describe todo el proceso .

Otros consejos

Otra opción, pero no es 100% fiable, sería depender de CAS negar fichas en la pila de llamadas.

Es de suponer que el primer método inicial de la clase cargada sería invocada por código bajo su control, a continuación, usted podría utilizar una acción de seguridad Denegar para impedir que el método de acceso a ciertas partes del marco .NET.

el código sería algo como lo siguiente:

[SecurityPermission(SecurityAction.Deny, Flags = SecurityPermissionFlag.NoFlags ^ SecurityPermissionFlag.Assertion)]
void CallExternalAssemblyClass(ExternalClass c)
{
    c.SomeMethod();
}

La solución propuesta tiene algunas advertencias, se supone que no está usando Silverlight y hay un riesgo potencial de seguridad, si la asamblea fue escrito usando el montaje CIL especialmente diseñado.

El beneficio obtenido es que se puede evitar el uso de dominios de aplicación por separado y los problemas de clasificación involucrados con múltiples dominios de aplicación.

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