Categories
.NET Desarrollo de Software Utilidades Windows Forms

Zoner & Seguridad de Acceso a Código

Los que han estado desarrollando aplicaciones de escritorio con .NET, seguramente saben que el CLR es el encargado de lo que puede o no hacer una aplicación en función a los permisos que reciba.

Code Access Security

Por si no saben todavía de la existencia de Zoner, ésta es una pequeña herramienta que permite probar si una determinada aplicación funciona o no en una zona determinada.

Este es el código de Zoner:

csharp:

using System;
using System.Reflection;
using System.Security;
using System.Security.Policy;

class App
{
    public static void Main(String[] args)
    {
        try
        {
            SecurityZone zone = SecurityZone.Internet;
            String url = "http://www.IBuySpy.com";
            String exe;
            String[] newArgs = null;

            for (Int32 index = 0; ; index++)
            {
                if (args[index][0] != '-' && args[index][0] != '/')
                {
                    exe = args[index];
                    newArgs = new String[args.Length - (index + 1)];
                    Array.Copy(args, index + 1, newArgs, 0, newArgs.Length);
                    break;
                }

                String setting = args[index].Substring(3);

                switch (args[index].ToUpper()[1])
                {
                    case 'Z': // Set zone
                        zone = (SecurityZone) Enum.Parse(typeof(SecurityZone), setting, true);
                        break;
                    case 'U': // Set url
                        url = setting;
                        break;
                    default:
                        throw (new ApplicationException());
                }
            }
            StartApp(exe, newArgs, zone, url);
        }
        catch (ArgumentException)
        {
            Usage();
        }
        catch (IndexOutOfRangeException)
        {
            Usage();
        }
        catch (ApplicationException) { Usage(); }
    }
    static void Usage()
    {
        Console.WriteLine(
           "Usage: zoner /u:[url] /z:[zone] [Executable File]\n" +
           "[url]\tUrl indicating the source of this .exe");
        Console.WriteLine();
        Console.Write("[zone]");
       
        String[] zones = Enum.GetNames(typeof(SecurityZone));
        foreach (String zone in zones)
        {
            Console.WriteLine("\t{0}", zone);
        }
        Console.WriteLine(
           "\nDefault:  zoner /u:http://www.IBuySpy.com /z:Internet");
    }
   
    static void StartApp(String exe,
       String[] newArgs, SecurityZone zone, String url)
    {
        Evidence evidence = new Evidence();

        evidence.AddHost(new Zone(zone));
        evidence.AddHost(new Url(url));
        AppDomain app = AppDomain.CreateDomain(exe, evidence);
        app.ExecuteAssembly(exe, evidence, newArgs);
    }
}

Lo que hace esta porción de código, es simplemente ejecutar en otro dominio la aplicación que se quiere probar, pero adjuntando información de la zona escogida.

Espero que esta pequeña utilidad les ayude a ahorrar un poco de tiempo :).

Categories
Desarrollo de Software Expresiones Regulares Web WordPress

Plugin de WordPress a la Lista Negra (Acronym Replacer Revisited)

Acronym Replacer Revisited, es un plugin modificado por Nicolás Fantino, que tiene la finalidad de reemplazar los acrónimos que aparecen en el contenido de una o más entradas.

Gracias a este plugin, he perdido unas cuantas horas intentando determinar porque el blog en el que estaba instalado demoraba mucho en cargar, incluso cuando intentaba validar el feed, el código de respuesta era : Server returned timed out.

A continuación los tiempos de respuesta con el plugin activado/desactivado:

code:

-- Plugin activado
Request Count:  1
Bytes Sent:     56
Bytes Received: 52,125

RESPONSE CODES
--------------
HTTP/200:       1

RESPONSE BYTES (by Content-Type)
--------------
 ~headers:      326
text/html:      51,799

PERFORMANCE
--------------
Time to First byte:     11,125ms
Time to Last byte:      13,547ms

code:

-- Plugin desactivado
Request Count:  1
Bytes Sent:     56
Bytes Received: 51,882

RESPONSE CODES
--------------
HTTP/200:       1

RESPONSE BYTES (by Content-Type)
--------------
 ~headers:      326
text/html:      51,556

PERFORMANCE
--------------
Time to First byte:     1,172ms
Time to Last byte:      1,453ms

Si se fijan los valores de Time to First byte y Time to Last byte se puede observar que hay una gran diferencia en los tiempos de respuesta.

No sé si a otros bloggers que usen este plugin les pase lo mismo, pero por mi parte no he intentado corregir el problema descrito -me dá la ligera impresión que es por el mal uso de expresiones regulares. Por otro lado, tampoco probé la versión original para ver si el problema se reproduce o no, pero por lo pronto es el primer plugin para WordPress que agrego a mi lista negra :D.

Categories
.NET ASP.NET Desarrollo de Software Microsoft Web XSS

Cross Site Scripting en ASP.NET y la respuesta de Microsoft

Luego de haber reportado el pequeño bug sobre XSS en asp.net a través de Microsoft Connect, finalmente dijeron que no corregirán ese bug para la siguiente versión de .NET Framework (orcas) por motivos de compatibilidad con versiones anteriores.

En la respuesta -bastante común por cierto- hacen referencia a esta entrada escrita por S. Somasegar en la que se comenta que se realizarán cambios mínimos para la siguiente versión.

Entonces, por lo pronto queda a responsabilidad de los desarrolladores tomar las medidas necesarias para evitar el problema descrito en una entrada anterior.

Nota: el bug necesita intervención del usuario y -me parece que- sólo funciona en Firefox.

Categories
Arquitectura Software Desarrollo de Software

The Architecture Journal

Ya mi amigo Jose Antonio había comentado sobre esta revista, sólo que al parecer se le olvidó mencionar que existe la posibilidad de recibir completamente gratis una versión impresa de ésta.

Pues hoy me acaba de llegar la edición número 10 de esta interesante revista, los temas que se contemplan son:

  • Composite Applications—The New Paradigm: Composite applications are moving the power from the developer to the user.
  • Context-Driven Access Via Microsoft Office: You don’t have to refactor all of your applications to create composite applications. Learn how one company interfaces with legacy systems using Information Bridge Framework.
  • Building Office Business Applications: Many business processes are document-centric. Explore the 2007 Office system features as a platform for composite applications with workflow.
  • Architecture Journal Profile: Scott Guthrie: Scott Guthrie is a general manager in Microsoft’s Developer Division. Get the update on his career and his thoughts on architecture.
  • Architecting Composite Smart Clients Using CAB and SCSF: Learn how the Composite Application Block and Smart Client Software Factory were used to expedite a real world banking application.
  • Quality Dta Through Enterprise Information Architecture: Data quality is not confined to the data layer. Learn how to get better data through
    your architecture.
  • Business Improvement Through Better Software Architecture: See how five organizational roles can help to bridge the gap between business strategy and software architecture.

Al parecer hoy tendré que sacrificar unas cuantas horas de sueño más de lo normal 🙂