Joven hacker sonriendo

Hackeamos su software

cero falsos positivos

Inteligencia experta + Tecnología especializada
DXST - SAST - IAST - SCA - DevSecOps
Caja blanca - Caja gris - Caja negra
Atacando Aplicaciones Web, APIs, Apps Móviles,
Cliente Servidor, Servidores, Redes, Dispositivos IoT
IoT SCI: Sistemas de Control Industrial

Usar Expresiones Regulares

Nuestros ethical hackers explican cómo evitar vulnerabilidades de seguridad mediante la programación segura en ASP.NET al validar las entradas de la aplicación utilizando expresiones regulares. Las entradas no validadas son vulnerables a ataques de inyección de código como XSS o SQLi.

Necesidad

Filtrar la entrada de datos en una aplicación para evitar problemas de seguridad.

Contexto

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

  1. La aplicación esta hecha en ASP.NET versión 1.0, 1.1 o superior.

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

Solución

La validación de entradas es una práctica muy recomendada para desarrollar aplicaciones seguras y robustas, dificultando los ataques de inyección de código malicioso más comunes como XSS o SQLi. Las expresiones regulares o regex son una herramienta muy poderosa y versátil ampliamente utilizada. En este artículo utilizaremos las expresiones regulares para efectuar una validación de entradas a una aplicación de ASP.NET.

El soporte para las expresiones regulares está disponible para las aplicaciones ASP.NET mediante el control RegularExpressionValidator y la clase Regex. Ambos pueden encontrarse en el espacio de nombres System.Text.RegularExpressions.

Para validar la entrada de datos en el lado del cliente usando el control RegularExpressionValidator se deben realizar lo siguiente pasos [1]:

  1. Agregar un control RegularExpressionValidator en la pagina ASP.

  2. Establecer la propiedad ControlToValidate para indicar cual será el control a validar.

  3. Establecer la propiedad ValidationExpression a una expresión regular correspondiente.

  4. Establecer la propiedad ErrorMessage. Aquí se define el mensaje que se mostrará si la validación falla.

El siguiente código muestra cómo se implementa el procedimiento descrito anteriormente a un campo de texto:

web.config
1
2
3
4
5
6
7
8
9
<%@ language="C#" %>
<form id="form1" runat="server">
  <asp:TextBox ID="txtName" runat="server"/>
  <asp:Button ID="btnSubmit" runat="server" Text="Submit" />
  <asp:RegularExpressionValidator ID="regexpName" runat="server"
         ErrorMessage="This expression does not validate."
         ControlToValidate="txtName"
         ValidationExpression="^[a-zA-Z'.\s]{1,40}$" />
</form>

La expresión regular utilizada en el ejemplo de código anterior limita un campo de nombre de entrada para los caracteres alfabéticos (mayúsculas y minúsculas), caracteres de espacio, las comillas simples y el carácter de punto. Además, la longitud del campo está limitada a 40 caracteres. De igual forma, para validar la entrada de datos en el lado del servidor se debe utilizar la clase Regex del espacio de nombres System.Text.RegularExpressions. A continuación se muestra un fragmento de código con la implementación de la validación de entradas del lado del servidor:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
using System.Text.RegularExpressions;
...
Regex reg = new Regex(@"^[a-zA-Z'.\s]{1,40}$");
Response.Write(reg.IsMatch(txtName.Text));

if (!Regex.IsMatch(txtName.Text))
{

}
else
{

}
...using System.Text.RegularExpressions;
...

Se recomienda realizar esta validación para cada una de las entradas de la aplicación. Se pueden utilizar diferentes expresiones regulares dependiendo del tipo de entrada.




Haz un comentario

Estado de los servicios - Términos de Uso