Pregunta

imagine el siguiente entorno:un XBAP aplicación que se ejecuta en la confianza parcial de modo (comportamiento por defecto;exigir la Plena Confianza no es una opción, pero antes de preguntar, si la plena confianza dada a la XBAP, todo funciona como se espera) se hace referencia a un local de la asamblea, que se encuentra en la GAC.Para lograr esto, permitimos que el "AllowPartiallyTrustedCallers"la opción de la asamblea local, y también se concede plena confianza.(imagino que esto es algún tipo de conectividad local de contraparte)

(por la forma en que son conscientes de los aspectos de seguridad usando el atributo AllowPartiallyTrustedCallers, esto está fuera del alcance de este post a pesar de que, simplemente, no importa)

Ahora, incluso si nuestro local GAC asamblea de plena confianza (podemos comprobar esta llamando Assembly.GetExecutingAssembly().IsFullyTrusted en cualquier momento), se producirá ninguna de las demandas (implícito o explícito), ya que es llamado por una confianza parcial de llamadas (nuestro XBAP). (me corrigen si estoy malentendido algo).Fortunatelly, podemos hacer explícito afirma que para obtener los permisos dentro de nuestro local GAC de la asamblea, por ejemplo:

new System.Security.Permissions.FileIOPermission(.....).Assert();

Por eso, podríamos evitar una pila caminar sobre las demandas de la derecha en este punto y hacer cualquier archivo de acceso como queremos.(de nuevo, por favor me corrija...) Esto en realidad funciona a la perfección! (en este caso)

El problema es que no cualquier e / s de archivo, en el hecho de que estamos llamando las bibliotecas externas que debe ser capaz de hacer todo lo que quiera (y se podría hacer un montón de cosas, el acceso al registro, realizar solicitudes de servicio web, escribir archivos, llamar a código no administrado - en detalle no lo sabemos, pero podemos confiar en ellos), y evitar que la demanda de la pila de a pie para llegar a nuestra confianza parcial de llamada.Debemos ser capaces de lograr esto, ya que todo se hace desde nuestro local instalado y de confianza GAC de la asamblea.(de nuevo, por favor, no se preocupan por los aspectos de seguridad aquí, sólo se supone, que podemos confiar en el cliente)

Método para solucionar esto:

  • Lo que pensamos de la primera, fue la afirmación de un conjunto de permisos (PermissionSet) a casi cualquier permiso antes de trabajar con la biblioteca externa.Esta casi funciona, pero parece que en algún punto todavía una excepción de seguridad se produce -, porque la biblioteca externa podría empezar más hilos que fallan por alguna razón, o porque su acceso a la entryassembly - en realidad, no lo sabemos.

  • En segundo lugar, hemos probado el siguiente ttribute

[System.Security.Permissions.PermissionSet(
  System.Security.Permissions.SecurityAction.Assert, Name = "FullTrust")]

tampoco funcionaba.

  • En tercer lugar, hemos pensado en abrir un nuevo dominio de aplicación, haciendo de la plena confianza del GAC de la asamblea de los dominios de aplicación de punto de entrada, y ejecutar cualquier cosa dentro de este dominio de aplicación - cualquier pila de pie nunca podría llegar a la confianza parcial de llamadas - por lo que en nuestra teoría).Por desgracia, no somos capaces de lograr esto...O de nueva creación dominio de aplicación falla incluso más demandas, incluso si se ha configurado para que se ejecute en "Mipc" zonas de seguridad de las Pruebas o sin restricciones SecurityPermission.Yo no soy capaz de conceder explícitamente plena confianza a todo el dominio de aplicación.

  • Cuarto, el uso de caspol no es una opción.(debido a la implementación de las razones)

Ahora, ya que esto debe ser una gran cantidad de información, espero que entiendas lo que desea archivar.

Para conseguir el punto: ¿Cómo puede una plena confianza de la asamblea afirmar una completa confianza a las asambleas llama, detener todos los recorridos de pila para llegar a la confianza parcial de llamada?

muchas Gracias de Antemano

¿Fue útil?

Solución

Buscando en la documentación de Microsoft en cuanto a que permita la Parcialmente de llamadas de Confianza Plena Confianza Asambleas No creo que este va a ser posible hacer.

Usted debe seguir insistiendo en que necesitamos evitar los problemas de seguridad, pero en realidad, lo que están tratando de hacer con su solución es de bypass esencialmente por cada porción de la seguridad de acceso del código del sistema dentro de la .NET Framework, y voy a estar en apuros para creer que vas a ser capaz de obtener una solución viable.

En la parte superior de esto, no me puedo imaginar que este proceso es algo que realmente hay que hacer de esta manera.

No podía descargar este procesamiento de la confianza parcial de llamadas para luego pasar a las comunicaciones a algo que se ejecutan localmente y de confianza?

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