Partager via


Défi JavaScript du Pare-feu d’applications web Azure (préversion)

Important

Le défi JavaScript d’Azure Web Application Firewall est actuellement en préversion. Pour connaître les conditions juridiques qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou plus généralement non encore en disponibilité générale, consultez l’Avenant aux conditions d’utilisation des préversions de Microsoft Azure.

Azure Web Application Firewall (WAF) sur Azure Front Door et Azure Application Gateway offre une fonctionnalité de challenge JavaScript comme option d’atténuation (parmi d’autres) pour la protection bot avancée. Pour Azure Front Door, il est disponible sur la version Premium en tant qu’action dans l’ensemble de règles personnalisé et dans l’ensemble de règles Bot Manager 1.x.

Le défi JavaScript est un défi web invisible utilisé pour distinguer les utilisateurs légitimes et les bots. Les bots malveillants échouent au défi, ce qui protège les applications web. De plus, le challenge JavaScript est avantageux parce qu’il réduit les frictions pour les utilisateurs légitimes, étant donné qu’il n’a besoin d’aucune intervention humaine.

Fonctionnement

Lorsque le défi JS est actif sur Azure WAF et que la requête HTTP(s) d’un client correspond à une règle spécifique, le client affiche une page de défi Microsoft JS. L’utilisateur voit cette page pendant quelques secondes pendant que le navigateur de l’utilisateur calcule le défi. Le navigateur du client doit calculer avec succès un défi JavaScript sur cette page pour recevoir la validation d’Azure WAF. Lorsque le calcul réussit, WAF valide la requête en tant que client non-bot et exécute le reste des règles WAF. Les demandes qui ne parviennent pas à calculer correctement le défi sont bloquées.

Les requêtes CORS (Cross-Origin Resource Sharing) sont challengées sur chaque tentative d’accès. Par conséquent, si un client accède à une page qui déclenche le challenge JavaScript à partir d’un domaine différent du domaine hébergeant le challenge, le client est à nouveau confronté au challenge même s’il l’a déjà réussi.

De plus, si un client résout le challenge JavaScript et que l’adresse IP du client change par la suite, le challenge est à nouveau émis.

Voici un exemple de page de défi JavaScript :

Capture d’écran montrant la page de défi JavaScript.

Date d'expiration

Le paramètre de stratégie WAF définit la durée de vie des cookies de défi JavaScript en minutes. L’utilisateur est défié après l’expiration de la durée de vie. La durée de vie est un entier compris entre 5 et 1 440 minutes, la valeur par défaut étant de 30 minutes. Le nom du cookie du challenge JavaScript est afd_azwaf_jsclearance sur Azure Front Door et appgw_azwaf_jsclearance sur Azure Application Gateway.

Remarque

Le cookie d’expiration du défi JavaScript est injecté dans le navigateur de l’utilisateur après avoir terminé le défi.

Limites

  • Les appels AJAX et API ne sont pas pris en charge : le défi JavaScript ne s’applique pas aux requêtes AJAX et API.

  • Restriction de taille du corps POST : la première requête qui déclenche un défi JavaScript est bloquée si son corps POST dépasse 128 Ko.

  • Ressources incorporées non HTML : le défi JavaScript est conçu pour les ressources HTML. Les défis liés aux ressources non HTML incorporées dans une page, telles que des images, css, fichiers JavaScript ou ressources similaires, ne sont pas pris en charge. Toutefois, s’il existe une demande de défi JavaScript réussie, ces limitations sont levées.

  • Compatibilité du navigateur : le défi JavaScript n’est pas pris en charge sur Microsoft Internet Explorer. Il est compatible avec les dernières versions de Microsoft Edge, Chrome, Firefox et les navigateurs web Safari.

  • La limite de débit n’est pas prise en charge : l’action de défi JavaScript sur Application Gateway n’est pas prise en charge pour les règles personnalisées de type limite de débit pendant la préversion publique.