Compartir a través de


Desafío de JavaScript del firewall de aplicaciones web de Azure

Azure Web Application Firewall (WAF) en Azure Application Gateway ofrece una característica de desafío de JavaScript (JS) como una de las opciones de mitigación para la protección avanzada del bot.

Azure Web Application Firewall (WAF) en Azure Front Door ofrece una característica de desafío de JavaScript (JS) como una de las opciones de mitigación para la protección avanzada de bots. Está disponible en la versión Premium como una acción en el conjunto de reglas personalizado y en el conjunto de reglas de Bot Manager 1.x.

El desafío de JavaScript es un desafío web invisible que distingue entre usuarios legítimos y bots. Los bots malintencionados fallan el desafío, protegiendo las aplicaciones web. Además, el desafío de JavaScript reduce la fricción de los usuarios legítimos porque no requiere intervención humana.

Importante

El desafío de JavaScript del Firewall de aplicaciones web de Azure en Azure Application Gateway está actualmente en versión preliminar. Consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure para conocer los términos legales que se aplican a las características de Azure que se encuentran en la versión beta, en versión preliminar o que todavía no se han publicado para que estén disponibles con carácter general.

Funcionamiento

Cuando el desafío de JavaScript está activo en Azure WAF y la solicitud HTTP(S) de un cliente coincide con una regla específica, el cliente se muestra una página de desafío de Microsoft JavaScript. El usuario ve esta página durante unos segundos mientras el explorador calcula el desafío. Si el explorador del usuario calcula correctamente el desafío, envía una respuesta a un punto de conexión de Azure que se expone cuando se ha configurado WAF. Sin embargo, este punto de conexión se expone al público; sin embargo, las solicitudes enviadas a este punto de conexión no se reenvieron al back-end y no cuentan para las características de limitación de velocidad. Si la llamada del explorador a este punto de conexión contiene los valores correctos que indican un cálculo correcto, el usuario pasa el desafío.

El explorador del cliente debe calcular correctamente un desafío de JavaScript en esta página para recibir la validación de Azure WAF. Cuando el cálculo se realiza correctamente, WAF valida la solicitud como un cliente que no es de bot y ejecuta el resto de las reglas de WAF. Las solicitudes que no pueden calcular correctamente el desafío se bloquean.

Las solicitudes de uso compartido de recursos entre orígenes (CORS) se desafían en cada intento de acceso. Por lo tanto, si un cliente accede a una página que desencadena el desafío de JavaScript desde un dominio diferente del dominio que hospeda el desafío, el cliente se enfrenta al desafío de nuevo incluso si el cliente ha pasado el desafío anteriormente.

Además, si un cliente resuelve el desafío de JavaScript y, a continuación, cambia la dirección IP del cliente, el desafío se emite de nuevo.

Esta es una página de desafío de JavaScript de ejemplo:

Captura de pantalla que muestra la página de desafío de JavaScript.

Expiration

La configuración de directiva de WAF define la duración de validez de cookies de desafío de JavaScript en cuestión de minutos. El usuario se desafía después de que expire la duración. La duración es un número entero entre 5 y 1440 minutos y el valor por defecto es 30 minutos. El nombre de la cookie de desafío de JavaScript está appgw_azwaf_jsclearance en Azure Application Gateway.

La configuración de directiva de WAF define la duración de validez de cookies de desafío de JavaScript en cuestión de minutos. El usuario se desafía después de que expire la duración. La duración es un número entero entre 5 y 1440 minutos y el valor por defecto es 30 minutos. El nombre de la cookie de desafío de JavaScript es afd_azwaf_jsclearance en Azure Front Door.

Nota:

La cookie de expiración del desafío de JavaScript se inserta en el explorador del usuario después de completar correctamente el desafío.

Limitaciones

  • No se admiten llamadas AJAX y API: el desafío de JavaScript no se aplica a las solicitudes de AJAX y API.
  • Restricción de tamaño del cuerpo POST: la primera solicitud que desencadena un desafío de JavaScript se bloquea si su cuerpo POST supera los 128 KB en Azure Application Gateway.
  • Restricción de tamaño del cuerpo POST: la primera solicitud que desencadena un desafío de JavaScript se bloquea si su cuerpo POST supera los 64 KB en Azure Front Door.
  • Recursos incrustados que no son HTML: el desafío de JavaScript está diseñado para los recursos HTML. No se admiten desafíos para los recursos que no son HTML insertados en una página, como imágenes, CSS, archivos JavaScript o recursos similares. Sin embargo, si se ha producido una solicitud previa exitosa de desafío de JavaScript, se levantan esas limitaciones.

  • Compatibilidad del explorador: el desafío de JavaScript no se admite en Microsoft Internet Explorer. Es compatible con las versiones más recientes de los exploradores web Microsoft Edge, Chrome, Firefox y Safari.

  • No se admite el límite de velocidad: la acción de desafío de JavaScript en Application Gateway no se admite para las reglas personalizadas de tipo límite de velocidad durante la versión preliminar.

  • Application Gateway for Containers WAF: Application Gateway for Containers WAF no admite el desafío de JavaScript.