Joven hacker sonriendo

Filtrar campos de entrada

Nuestros ethical hackers explican cómo evitar vulnerabilidades de seguridad mediante la programación segura en ASPNET al filtrar campos de entrada. Las aplicaciones web deben evitar la inyección de código malicioso al realizar una validación de datos en sus campos de entrada.

Necesidad

Filtrar la entrada de un usuario 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 está hecha en ASP.NET.

  2. Se tiene acceso a modificar la aplicación

Solución

En cualquier aplicación web, realizar una validación de entrada es esencial, debido a que casi todos los ataques a nivel de aplicación se realizan a través de entradas maliciosas.

Idealmente, usted como desarrollador, debería validar todas las entradas, incluyendo los campos de formularios, los parámetros string de las solicitudes, las cookies y los valores de ambiente del navegador (Por ejemplo: user agent , IP) con el fin de proteger su aplicación contra inyecciones de código malicioso [1].

Una práctica común, es asumir que todas las entradas a su aplicación Web son maliciosas. Además es recomendable asegurarse de utilizar una validación de servidor para todas las fuentes de entrada. Utilizar validación de cliente (client side validation) para reducir los viajes innecesarios al servidor y mejorar la experiencia del usuario. Pero no confiar únicamente en esto último, debido a que puede ser fácilmente sobrepasado.

Para validar una entrada, defina entradas aceptables para cada campo de entrada de la aplicación. Una práctica efectiva es restringir la entrada con criterios de longitud, rango, formato y tipo. Utilice la lista de caracteres aceptables para validar la entrada, en lugar de caracteres no aceptables. Utilizar la lista de caracteres no aceptables no es práctico debido a que es muy difícil anticipar todas las posibles variaciones de una entrada maliciosa [2].

En este artículo se abordará cómo evitar la inyección de código malicioso filtrando las entradas ingresadas a los campos de la aplicación en ASP.NET. Para ello se deben realizar los siguientes pasos:

  1. En primer lugar, se usa la capacidad de ASP.NET para validar peticiones. Para esto se agrega en Machine.config la siguiente línea:

    test.py
    1
    <pages validateRequest="true" ... />
    
  2. También se usan expresiones regulares para validar la entrada del usuario. Por ejemplo, si se requiere validar una entrada de texto donde solo se permitan caracteres alfabéticos, se usa el siguiente código:

    1
    2
    3
    4
    5
    6
    7
      <asp:TextBox id="txtName" runat="server"></asp:TextBox>
      <asp:RegularExpressionValidator id="nameRegex" runat="server"
            ControlToValidate="txtName"
            ValidationExpression="^[a-zA-Z.\s]{1,40}$"
            ErrorMessage="Invalid name">
      </asp:regularexpressionvalidator>
    </form>
    
  3. Si se requiere validar una entrada de texto donde solo se permitan caracteres numéricos, se usa el siguiente código:

    1
    2
    3
    4
    5
    6
           <ID="RangeValidator1"
           Runat="server"
           ErrorMessage="Invalid range. Number must be between 0 and 255."
           ControlToValidate="rangeInput"
           MaximumValue="255"
           MinimumValue="0" Type="Integer" />
    



Haz un comentario

Estado de los servicios - Términos de Uso