ADC

Verificación de coherencia de campos de formulario

La comprobación de coherencia de campos de formulario examina los formularios web devueltos por los usuarios de su sitio web y verifica que el cliente no haya modificado los formularios web de forma inapropiada. Esta comprobación solo se aplica a las solicitudes HTML que contienen un formulario web, con o sin datos. No se aplica a las solicitudes XML.

La comprobación de coherencia de los campos del formulario evita que los clientes realicen cambios no autorizados en la estructura de los formularios web de su sitio web cuando rellenan y envían un formulario. También garantiza que los datos que envía un usuario cumplen con las restricciones HTML de longitud y tipo, y que los datos de los campos ocultos no se modifican. Esto evita que un atacante manipule un formulario web y utilice el formulario modificado para obtener acceso no autorizado al sitio web, redirija el resultado de un formulario de contacto que utiliza un script inseguro y, por lo tanto, envíe correo electrónico masivo no solicitado, o aproveche una vulnerabilidad en el software de su servidor web para hacerse con el control del servidor web o del sistema operativo subyacente. Los formularios web son un eslabón débil en muchos sitios web y atraen una amplia gama de ataques.

La comprobación de coherencia de los campos del formulario verifica todo lo siguiente:

  • Si se envía un campo al usuario, la verificación garantiza que el usuario lo devuelva.
  • La verificación aplica las longitudes y los tipos de los campos HTML.

    Nota:

    • La comprobación de coherencia de los campos del formulario impone restricciones HTML sobre el tipo y la longitud de los datos, pero no valida los datos de los formularios web. Puede usar la verificación de formatos de campo para configurar reglas que validen los datos devueltos en campos de formulario específicos de sus formularios web.

    • La protección de coherencia de campos de formulario inserta un campo oculto “as_fid” en los formularios de respuesta que se envían al cliente. ADC eliminará el mismo campo oculto cuando el cliente envíe el formulario. Si hay algún javascript del lado del cliente que calcule la suma de verificación en los campos del formulario y verifique la misma suma de verificación en el backend, puede provocar la interrupción de la aplicación. En este escenario, se recomienda relajar el campo de coherencia del formulario del firewall de la aplicación, el campo oculto “as_fid”, del cálculo de la suma de verificación de javascript del lado del cliente.

  • Si su servidor web no envía un campo al usuario, la verificación no permite que el usuario agregue ese campo y devuelva datos en él.
  • Si un campo es de solo lectura u oculto, la comprobación comprueba que los datos no han cambiado.
  • Si un campo es un campo de cuadro de lista o botón de opción, la verificación comprueba que los datos de la respuesta corresponden a uno de los valores de ese campo.

Si un formulario web devuelto por un usuario infringe una o más de las comprobaciones de coherencia de los campos del formulario y no has configurado el Web App Firewall para permitir que ese formulario web infrinja las comprobaciones de coherencia de los campos del formulario, la solicitud se bloquea.

Si usa el asistente o la GUI, en el cuadro de diálogo Modificar la verificación de coherencia de los campos del formulario, en la ficha General, puede habilitar o inhabilitar las acciones Bloquear, Registrar, Aprender y Estadísticas.

También puede configurar la coherencia de los campos sin sesión en la ficha General. Si la coherencia de campos sin sesión está habilitada, el Web App Firewall comprueba solo la estructura del formulario web y prescinde de las partes de la comprobación de coherencia de campos de formulario que dependen del mantenimiento de la información de la sesión. Esto puede acelerar la comprobación de la coherencia de los campos del formulario con pocas penalizaciones de seguridad para los sitios web que utilizan muchos formularios. Para usar la coherencia de campos sin sesión en todos los formularios web, seleccione Activar. Para usarlo solo para los formularios enviados con el método HTTP POST, seleccione postOnly

Si utiliza la interfaz de línea de comandos, puede introducir el siguiente comando para configurar la comprobación de coherencia de los campos del formulario:

  • set appfw profile <name> -fieldConsistencyAction [**block**] [**learn**] [**log**] [**stats**] [**none**]

Para especificar las flexibilizaciones para la comprobación de la coherencia de los campos del formulario, debe utilizar la GUI. En la ficha Comprobaciones del cuadro de diálogo Modificar comprobación de coherencia de campos de formulario, haga clic en Agregar para abrir el cuadro de diálogo Agregar relajación de comprobación de coherencia de campos de formulario o seleccione una relajación existente y haga clic en Abrir para abrir el cuadro de diálogo Modificar relajación de comprobación de coherencia de campos de formulario. Cualquiera de los cuadros de diálogo proporciona las mismas opciones para configurar una relajación, como se describe en Configuración manual mediante la GUI.

A continuación se presentan ejemplos de relajación de comprobación de coherencia de campos de formulario:

Nombres de campos de formulario:

  • Elija los campos del formulario con el nombre UserType:

     ^UserType$
     <!--NeedCopy-->
    
  • Elija campos de formulario con nombres que comiencen por UserType_ y que vayan seguidos de una cadena que comience por una letra o un número y esté formada por entre una y veintiún letras, números o el símbolo de un apóstrofe o guión:

     ^UserType_[0-9A-Za-z][0-9A-Za-z'-]{0,20}$
     <!--NeedCopy-->
    
  • Elija campos de formulario con nombres que empiecen por Turkish-UserType_ y que, por lo demás, sean los mismos que los de la expresión anterior, excepto que pueden contener caracteres especiales turcos en todas partes:

     ^T\xC3\xBCrk\xC3\xA7e-UserType_([0-9A-Za-z]|\x[0-9A-Fa-f][0-9A-Fa-f])+$
     <!--NeedCopy-->
    

    Nota:

    Consulte Formato de codificación de caracteres PCRE para obtener una descripción completa de los caracteres especiales admitidos y cómo codificarlos correctamente.

  • Elija nombres de campo de formulario que comiencen por una letra o un número, que consistan en una combinación de letras y/o números solamente y que contengan la cadena Num en cualquier lugar de la cadena:

     ^[0-9A-Za-z]\*Num[0-9A-Za-z]\*$
     <!--NeedCopy-->
    

URL de acciones de campo de formulario:

  • Elija las URL que comiencen por http://www.example.com/search.pl? y contengan cualquier cadena después de la consulta, excepto en el caso de una consulta nueva:

     ^http://www[.]example[.]com/search[.]pl?[^?]*$
     <!--NeedCopy-->
    
  • Elija direcciones URL que comiencen por http://www.example-español.com y tengan rutas y nombres de archivo compuestos por letras mayúsculas y minúsculas, números, caracteres especiales que no sean ASCII y símbolos seleccionados en la ruta. El carácter ñ y cualquier otro carácter especial se representan como cadenas UTF-8 codificadas que contienen el código hexadecimal asignado a cada carácter especial del juego de caracteres UTF-8:

     ^http://www[.]example-espa\xC3\xB1ol[.]com/(([0-9A-Za-z]|\x[0-9A-Fa-f][0-9A-Fa-f])
     ([0-9A-Za-z_-]|\x[0-9A-Fa-f][0-9A-Fa-f])\*/)\*([0-9A-Za-z]|\x[0-9A-Fa-f][0-9A-Fa-f])
     ([0-9A-Za-z_-]|\x[0-9A-Fa-f][0-9A-Fa-f])*[.](asp|htp|php|s?html?)$
     <!--NeedCopy-->
    
  • ¿Elegir todas las URL que contienen la cadena /search.cgi? :

     ^[^?<>]\*/search[.]cgi?[^?<>]\*$
     <!--NeedCopy-->
    

Precaución:

Las expresiones regulares son potentes. Especialmente si no está familiarizado con las expresiones regulares en formato PCRE, compruebe las expresiones regulares que escriba. Asegúrese de que definen exactamente la URL que quiere agregar como excepción y nada más. El uso descuidado de comodines, y especialmente de la combinación de metacaracteres/comodín punto-asterisco (.*), puede tener resultados que no quiere o espera, como bloquear el acceso a contenido web que no tenía intención de bloquear o permitir un ataque que la comprobación de consistencia de cookies tendría de otro modo bloqueado.

Verificación de coherencia de campos de formulario

En este artículo