Contrôle de cohérence des champs de formulaire
La vérification de cohérence des champs de formulaire examine les formulaires Web renvoyés par les utilisateurs de votre site Web et vérifie que les formulaires Web n’ont pas été modifiés de façon inappropriée par le client. Cette vérification s’applique uniquement aux demandes HTML qui contiennent un formulaire Web, avec ou sans données. Il ne s’applique pas aux requêtes XML.
La vérification de cohérence des champs de formulaire empêche les clients d’apporter des modifications non autorisées à la structure des formulaires Web de votre site Web lorsqu’ils remplissent et soumettent un formulaire. Il garantit également que les données soumises par un utilisateur respectent les restrictions HTML pour la longueur et le type, et que les données des champs masqués ne sont pas modifiées. Cela empêche un attaquant de falsifier un formulaire Web et d’utiliser le formulaire modifié pour obtenir un accès non autorisé au site Web, rediriger la sortie d’un formulaire de contact qui utilise un script non sécurisé et envoyant ainsi des courriels non sollicités en masse, ou d’exploiter une vulnérabilité dans votre logiciel de serveur Web pour prendre le contrôle du Web ou le système d’exploitation sous-jacent. Les formulaires Web constituent un maillon faible sur de nombreux sites Web et attirent un large éventail d’attaques.
La vérification de cohérence des champs de formulaire vérifie tous les éléments suivants :
- Si un champ est envoyé à l’utilisateur, la vérification garantit qu’il est renvoyé par l’utilisateur.
-
La vérification applique les longueurs et les types de champs HTML.
Remarque :
-
La vérification de cohérence des champs de formulaire applique des restrictions HTML sur le type et la longueur des données, mais ne valide pas autrement les données dans les formulaires Web. Vous pouvez utiliser la vérification Formats de champ pour configurer des règles qui valident les données renvoyées dans des champs de formulaire spécifiques de vos formulaires Web.
-
La protection de cohérence des champs de formulaire insère un champ masqué « as_fid » dans les formulaires de réponse envoyés au client. Le même champ masqué sera effacé par ADC lorsque le client soumet le formulaire. S’il y a un javascript côté client effectuant un calcul de somme de contrôle sur les champs du formulaire et la vérification de la même somme de contrôle sur le backend peut provoquer une rupture de l’application. Dans ce scénario, Il est recommandé de détendre le champ caché de la cohérence du champ de pare-feu d’application champ caché « as_fid » à partir du calcul de somme de contrôle javascript côté client.
-
- Si votre serveur Web n’envoie pas de champ à l’utilisateur, la vérification ne permet pas à l’utilisateur d’ajouter ce champ et d’y retourner des données.
- Si un champ est en lecture seule ou masqué, la vérification vérifie que les données n’ont pas changé.
- Si un champ est une zone de liste ou un champ de bouton radio, la vérification vérifie que les données de la réponse correspondent à l’une des valeurs de ce champ.
Si un formulaire Web renvoyé par un utilisateur viole un ou plusieurs contrôles de cohérence du champ de formulaire et que vous n’avez pas configuré le pare-feu de l’application Web pour autoriser ce formulaire Web à enfreindre les contrôles de cohérence du champ de formulaire, la demande est bloquée.
Si vous utilisez l’assistant ou l’interface graphique, dans la boîte de dialogue Modifier le contrôle de cohérence des champs de formulaire, sous l’onglet Général, vous pouvez activer ou désactiver les actions Bloquer, Journaliser, Apprendre et Statistiques.
Vous configurez également la cohérence des champs sans session dans l’onglet Général. Si Cohérence des champs sans session est activée, le Web App Firewall vérifie uniquement la structure du formulaire Web, en supprimant les parties de la vérification de cohérence des champs de formulaire qui dépendent de la tenue à jour des informations de session. Cela peut accélérer la vérification de la cohérence des champs de formulaire avec peu de pénalité de sécurité pour les sites Web qui utilisent de nombreux formulaires. Pour utiliser la cohérence des champs sans session sur tous les formulaires Web, sélectionnez Activer. Pour l’utiliser uniquement pour les formulaires soumis avec la méthode HTTP POST, sélectionnez PostOnly
Si vous utilisez l’interface de ligne de commande, vous pouvez entrer la commande suivante pour configurer le contrôle de cohérence des champs de formulaire :
set appfw profile <name> -fieldConsistencyAction [**block**] [**learn**] [**log**] [**stats**] [**none**]
Pour spécifier des relaxations pour la vérification de cohérence des champs de formulaire, vous devez utiliser l’interface graphique. Sous l’onglet Vérifications de la boîte de dialogue Modifier le contrôle de cohérence des champs de formulaire, cliquez sur Ajouter pour ouvrir la boîte de dialogue Ajouter une relaxation du contrôle de cohérence des champs de formulaire ou sélectionnez une relaxation existante et cliquez sur Ouvrir pour ouvrir la boîte de dialogue Modifier la relaxation du contrôle de cohérence des champs de formulaire. L’une ou l’autre des boîtes de dialogue offre les mêmes options de configuration d’une relaxation, comme décrit dans Configuration manuelle à l’aide de l’interface graphique.
Voici des exemples d’assouplissements de vérification de cohérence des champs de formulaire :
Noms des champs de formulaire :
-
Choisissez les champs de formulaire avec le nom UserType :
^UserType$ <!--NeedCopy-->
-
Choisissez des champs de formulaire dont les noms commencent par UserType_ et sont suivis d’une chaîne qui commence par une lettre ou un chiffre et se compose de une à vingt et un lettres, des chiffres ou de l’apostrophe ou du trait d’union :
^UserType_[0-9A-Za-z][0-9A-Za-z'-]{0,20}$ <!--NeedCopy-->
-
Choisissez des champs de formulaire avec des noms commençant par Turkish-userType_ et qui sont autrement les mêmes que l’expression précédente, sauf qu’ils peuvent contenir des caractères spéciaux turcs dans l’ensemble :
^T\xC3\xBCrk\xC3\xA7e-UserType_([0-9A-Za-z]|\x[0-9A-Fa-f][0-9A-Fa-f])+$ <!--NeedCopy-->
Remarque :
Voir Format de codage de caractères PCRE pour une description complète des caractères spéciaux pris en charge et comment les encoder correctement.
-
Choisissez des noms de champs de formulaire qui commencent par une lettre ou un chiffre, qui sont constitués d’une combinaison de lettres et/ou de chiffres uniquement et qui contiennent la chaîne Num n’importe où dans la chaîne :
^[0-9A-Za-z]\*Num[0-9A-Za-z]\*$ <!--NeedCopy-->
URL d’action du champ de formulaire :
-
Choisissez les URL commençant par
http://www.example.com/search.pl?
et contenant une chaîne après la requête, à l’exception d’une nouvelle requête :^http://www[.]example[.]com/search[.]pl?[^?]*$ <!--NeedCopy-->
-
Choisissez les URL commençant par
http://www.example-español.com
et dont les chemins d’accès et les noms de fichiers sont constitués de majuscules et minuscules, de chiffres, de caractères spéciaux non ASCII et de symboles sélectionnés dans le chemin d’accès. Le caractère ñ et tous les autres caractères spéciaux sont représentés sous la forme de chaînes UTF-8 codées contenant le code hexadécimal attribué à chaque caractère spécial dans le jeu de caractères 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-->
-
Choisissez toutes les URL qui contiennent la chaîne /search.cgi?:
^[^?<>]\*/search[.]cgi?[^?<>]\*$ <!--NeedCopy-->
Attention :
Les expressions régulières sont puissantes. Surtout si vous n’êtes pas familier avec les expressions régulières au format PCRE, vérifiez les expressions régulières que vous écrivez. Assurez-vous qu’elles définissent exactement l’URL que vous voulez ajouter en tant qu’exception, et rien d’autre. L’utilisation négligente des caractères génériques, et en particulier de la combinaison de métacaractères/caractères génériques (.*), peut avoir des résultats que vous ne voulez pas ou attendez pas, comme bloquer l’accès au contenu Web que vous n’aviez pas l’intention de bloquer ou autoriser une attaque que la vérification de la cohérence des cookies aurait autrement bloqué.