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.

4 comentarios sobre “Si quieres Full Trust… dímelo!!!!”

  1. 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.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *