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.
Ayer publicaba Rodrigo Corral en su blog, «Si quieres Full Trust… dímelo!!» , cómo podíamos requerir
Rodri Rodri…. como se nota que vienes de .NET 1.0 Pre-Alpha……
Has encontrado Permview en .NET 2.0??? o será PermCalc???
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.
Jejejeje… cierto cierto chicos… gracias por el apunte!! No se os escapa una…