Si quieres Full Trust... dímelo!!!!

De acuerdo que todos los desarrolladores somos un pelín vagos en lo que a la seguridad se refiere y que en lugar de declarar explicitamente los permisos que nuestra aplicación preferimos asumir que vamos a correr con Full Trust... pero nada nos cuesta que si alguien intenta correr nuestra aplicación desde una zona que no es Full Trust por defecto, controlemos el problema e informemos convenientemente al usuario de que está ocurriendo. Si no nos molestamos en declarar que permisos necesitas nuestra aplicación debemos asumir que solo funcionará correctamente en entornos Full Trust, y para evitar sorpresas tenemos dos caminos:

1) Declarar a nivel de assembly que necesitamos Full Trust poniendo la siguiente línea en el AssemblyInfo:

[assembly: PermissionSet(SecurityAction.RequestMinimum, Unrestricted = true)]

De esta manera que cuando alguien trate de cargar el assembly recibirá un casque inmundo pero al menos podrá utilizar la herramienta Permview.exe para ver que el assembly requiere Full Trust.

2) Comprobar al principio de nuestro programa que tenemos Full Trust y si no es el caso, sacar un pequeño mensaje... siempre que tengamos permisos para sacar algo por pantalla :(

private static bool CheckFullTrust()
{
   try
   {
      // Demandar Full Trust
      new PermissionSet(PermissionState.Unrestricted).Demand();
      return true;
   }
   catch (SecurityException)
   {
      try
      {
         // No estamos en Full Trust, se lo contamos al usuario
         MessageBox.Show("La aplicación necesita Full Trust");
      }
      catch (SecurityException) 
      {
        // La aplicación no tiene permisos mostrar mensajes... :(
        //Logeamos lo ocurrido
      }
   }
   return false;
}

Recordad sin embargo que la buena práctica es declara que permisos necesita nuestro assembly.

Published 11/6/2007 19:35 por Rodrigo Corral
Archivado en: ,
Comparte este post:
http://geeks.ms/blogs/rcorral/archive/2007/06/11/si-quieres-full-trust-d-237-melo.aspx

Comentarios

# Si quieres permisos... manifiestate!!

Ayer publicaba Rodrigo Corral en su blog, "Si quieres Full Trust... dímelo!!" , cómo podíamos requerir

Tuesday, June 12, 2007 1:52 PM por CODE FACTORY - Proof of Concept

# re: Si quieres Full Trust... dímelo!!!!

Rodri Rodri.... como se nota que vienes de .NET 1.0 Pre-Alpha......

Has encontrado Permview en .NET 2.0??? o será PermCalc???

Tuesday, June 12, 2007 5:39 PM por Unai

# re: Si quieres Full Trust... dímelo!!!!

The Permission Viewer (PermView) es para 1.0 y 1.1.

Para la 2.0 es PermCalc como muy bien indica Unai, pero según tengo entendido, la funcionalidad de PermCalc no es exactamente la misma que la que tiene PermView, es decir, que no es un sustituto 100% aunque hace su función.

A mí no obstante, me mola mucho eso de complicarme la vida usando Reflector que es otra alternativa quizás más heavy.

Tuesday, June 12, 2007 6:31 PM por Jorge Serrano

# re: Si quieres Full Trust... dímelo!!!!

Jejejeje... cierto cierto chicos... gracias por el apunte!! No se os escapa una...

Tuesday, June 12, 2007 7:01 PM por Rodrigo Corral