Joven hacker sonriendo

Hackeamos su software

cero falsos positivos

Inteligencia experta + tecnología especializada

Depuración de programas

Nuestros ethical hackers explican cómo evitar vulnerabilidades de seguridad mediante la programación segura en C Sharp al habilitar los mensajes de depuracion en un ambiente de desarrollo para que estos puedan ser facilmente eliminados al ser desplegada la aplicacion en un ambiente productivo.

Necesidad

Se está desarrollando una aplicación en C# y se deben habilitar los mensajes de depuracion en las fases de desarrollo de manera que estos puedan ser facilmente deshabilitados en un ambiente de producción.

Contexto

A continuación se describen las circunstancias bajo las cuales la siguiente solución tiene sentido:

  1. Se está desarrollando una aplicación en C#.

  2. Los eventos de depuración deben estar habilitados en la fase de desarrollo y deshabilitados en un ambiente de producción.

Solución

  1. Para que los eventos de depuración funcionen correctamente en la fase de desarrollo y puedan ser eliminados fácilmente en la etapa de producción, podemos hacer uso de directivas del preprocesador o del uso de clases especializadas para la depuración.[2] Las directivas del preprocesador ayudaran a que el codigo fuente sea facilmente modificado entre diferentes ambientes. Para el primer caso, se debe usar los condicionales del preprocesador junto a la variable DEBUG:

    ejemplo.cs
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    using System;
    class Program
    {
        static void Main(string[] args)
        {
    #if DEBUG
            Console.WriteLine("Using preprocessor");
    #endif
        }
    }
    
  2. Si la variable DEBUG es definida en el momento de compilación, el mensaje "Using preprocessor" es mostrado en pantalla luego de la ejecución:

    csc /define:DEBUG /out:Program.exe Program.cs
    Program.exe
    Using preprocessor
    csc /out:Program.exe Program.cs
    Program.exe
    
  3. Para el uso de clases especializadas para la depuración se deben importar todas las clases relacionadas al nombre de espacio Diagnostics [2]:

    1
    2
    using System;
    using System.Diagnostics;
    
  4. Se define el nombre de la clase y el inicio del programa:

    1
    2
    3
    4
    class Program
    {
        static void Main(string[] args)
        {
    
  5. Utilizamos el método WriteLine de la clase Debug, el cual envía el contenido a listeners especializados para la depuración, en el entorno integrado de desarrollo de C# los resultados son enviados a la pestaña de resultados (CTRL + ALT + O):

    1
    2
    3
    4
    5
            Debug.WriteLine("Debug line");
            Debug.WriteLine("Calling method 1");
            Debug.WriteLine("Calling method 2");
        }
    }
    
  6. Para habilitar este tipo de depuración en un ambiente diferente del ofrecido por Visual Studio, debe agregarse uno o más listeners que estén pendientes de atender los mensajes de depuración. Por ejemplo, para hacerlo mediante la salida estándar (stdout), puede utilizar:

    1
    2
    Debug.Listeners.Clear(); //Solo en caso de que se desee deshabilitar a los demás listeners
    Debug.Listeners.Add(new TextWriterTraceListener(Console.Out));
    
  7. Para habilitar este tipo de depuración, el programa debe compilarse indicando la directiva de depuración:

    csc /define:DEBUG /out:Program.exe Program.cs
    Program.exe
    Debug line
    Calling method 1
    Calling method 2
    csc /out:Program.exe Program.cs
    Program.exe
    
  8. De esta manera se facilita el cambio entre los diferentes ambientes. Los mensajes de depuración podran ser facilmente deshabilitados en ambientes productivos y habilitados en ambientes de desarrollo donde es necesaria la depuración.

Descargas

Puedes descargar el código fuente pulsando en el siguiente enlace:

  1. program.cs contiene todas las instrucciones C# del programa.




Haz un comentario

Estado de los servicios - Términos de Uso