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]:
-
Agregar un control RegularExpressionValidator en la pagina ASP.
-
Establecer la propiedad ControlToValidate
para indicar cual será el control a validar.
-
Establecer la propiedad ValidationExpression
a una expresión regular correspondiente.
-
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
<%@ 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:
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.