ADC

Comprobación de coherencia de campos de formulario

La comprobación de coherencia del campo de formulario examina los formularios web devueltos por los usuarios de su sitio web y comprueba que los formularios web no fueron modificados incorrectamente por el cliente. 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 del campo del formulario impide que los clientes realicen cambios no autorizados en la estructura de los formularios web de su sitio web cuando rellenen y envíen un formulario. También garantiza que los datos que envía un usuario cumplan las restricciones HTML de longitud y tipo, y que los datos de los campos ocultos no se modifiquen. Esto evita que un atacante manipule un formulario web y utilice el formulario modificado para obtener acceso no autorizado al sitio web, redirigir la salida de un formulario de contacto que utiliza un script inseguro y, por lo tanto, enviar correo electrónico masivo no solicitado, o explotar una vulnerabilidad en el software del servidor web para obtener el control de la web o el sistema operativo subyacente. Los formularios web son un enlace débil en muchos sitios web y atraen una amplia gama de ataques.

La comprobación Consistencia de campos de formulario comprueba todos los elementos siguientes:

  • Si se envía un campo al usuario, la comprobación garantiza que el usuario lo devuelve.
  • La comprobación aplica longitudes y tipos de campo HTML.

    Nota:

    • La comprobación Consistencia de campos de formulario aplica restricciones HTML sobre el tipo y la longitud de datos, pero no valida los datos en formularios web. Puede utilizar la comprobación Formatos de campo para configurar reglas que validen los datos devueltos en campos de formulario específicos de los 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. El mismo campo oculto será eliminado por ADC cuando el cliente envíe el formulario. Si hay algún javascript del lado del cliente haciendo cálculo de suma de comprobación en los campos de formulario y verificando la misma suma de comprobación en el backend puede causar la rotura de la aplicación. En este caso, Se recomienda relajar la consistencia del campo de formulario de firewall de aplicación campo oculto campo “as_fid” de cálculo de suma de comprobación javascript del lado del cliente.

  • Si el servidor web no envía un campo al usuario, la comprobación no permite al usuario agregar ese campo y devolver 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 de botón de opción, la comprobació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 varias de las comprobaciones de coherencia de campos de formulario y no ha configurado el Web App Firewall para permitir que dicho formulario web infrinja las comprobaciones de coherencia de campos de formulario, la solicitud se bloquea.

Si utiliza el asistente o la GUI, en el cuadro de diálogo Modificar comprobación de coherencia de campos de formulario, en la ficha General puede habilitar o inhabilitar las acciones Bloquear, Registro, Aprendizaje y Estadísticas.

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

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

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

Para especificar relajantes para la comprobación Consistencia de campos de 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 campos de formulario con el nombre UserType:

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

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

     ^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-->
    

Direcciones URL de acción de campo de formulario:

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

     ^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 que constan de letras mayúsculas y minúsculas, números, caracteres especiales no 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 en el 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-->
    
  • Elija todas las URL que contengan la cadena /search.cgi? :

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

Precaución:

Las expresiones regulares son potentes. Especialmente si no está completamente familiarizado con las expresiones regulares con formato PCRE-format, 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 metacaracteras/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.

Comprobación de coherencia de campos de formulario

En este artículo