Joven hacker sonriendo

Hackeamos su software

cero falsos positivos

Inteligencia experta + automatización eficaz

Filtrar entradas usando Expresiones Regulares

Nuestros ethical hackers explican cómo validar el tipo de contenido de una variable en nuestras aplicaciones C# utilizando expresiones regulares para filtrar el tipo de caracteres que pueden contener estas con el fin de evitar inyecciones de código malicioso.

Necesidad

Filtrar entradas en una aplicación usando expresiones regulares en C#.

Contexto

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

  1. Se requiere implementar un control para validar la entrada de datos en la aplicación

  2. La aplicación está hecha en C#.

Solución

  1. Las expresiones regulares son usadas dentro de las aplicaciones C# para limitar la entrada de datos no confiables o inseguras evitando, de esta manera, que un atacante pueda inyectar código malicioso. Las expresiones regulares son una buena manera de validar los campos de texto como nombres, direcciones, números de teléfono, correo electrónico y otra información del usuario. Además, también se pueden utilizar para forzar la entrada (limitando el rango de caracteres de entrada), aplicar reglas de formato y verificar longitudes.

  2. El soporte para las expresiones regulares está disponible para las aplicaciones desarrolladas en C# mediante el uso del espacio de nombres System.Text.RegularExpressions, el cual contiene la clase Regex [1].

    ejemplo.cs
    1
    2
    using System;
    using System.Text.RegularExpressions;
    
  3. A continuación se debe crear una instancia de la clase Regex, la cual es la representación de la expresión regular.

    1
    2
    3
    4
    5
    namespace LineaBase {
    
      class Program {
    
        static Regex re = new Regex("^[a-zA-Z'.\\s]{1,40}$");
    
  4. La expresión regular utilizada en el código anterior limita un campo de nombre de entrada para los caracteres alfabéticos (mayúsculas y minúsculas), caracteres de espacio, la comilla simple y el carácter de punto. Además, la longitud del campo está limitada a 40 caracteres. Como paso siguiente se comprueba, mediante el método IsMatch de la instancia de Regex si la dirección de correo pasada como parámetro corresponde al patrón o no. El segundo argumento indica a partir de que posición de la entrada se verificará la existencia del patrón, en este caso usamos 0 para indicar que desde el inicio.

    1
    2
    3
    4
    5
    6
    7
        static void Main(string[] args) {
          string email = args[0];
          string respuesta = re.IsMatch(email, 0) ? "válido" : "NO válido";
          Console.Out.WriteLine("{0}", respuesta);
        }
      }
    }
    
  5. Se compila y ejecuta pasando como parámetro el argumento "hola" y se observa que se ha clasificado la cadena como válida.

    > csc ejemplo.cs
    Microsoft (R) Visual C# 2010 Compiler version 4.0.30319.1
    Copyright (C) Microsoft Corporation. All rights reserved.
    
    > ejemplo hola
    válido
    
  6. Ahora se ejecuta pasando como parámetro el argumento "hola*", con un asterisco al final, carácter que no se encuentra en la definición del patrón, y se observa que se ha clasificado la cadena como NO válida.

    > ejemplo hola*
    NO válido
    

Descargas

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

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




Haz un comentario

Estado de los servicios - Términos de Uso