Contrôle de cohérence des champs de formulaire
Le contrôle 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 manière inappropriée par le client. Cette vérification s’applique uniquement aux requêtes HTML qui contiennent un formulaire Web, avec ou sans données. Elle ne s’applique pas aux requêtes XML.
Le contrôle 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. Cela garantit également que les données soumises par un utilisateur répondent aux restrictions HTML en matière de longueur et de 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é à un site Web, de rediriger le résultat d’un formulaire de contact utilisant un script non sécurisé et d’envoyer ainsi des e-mails en masse non sollicités, ou d’exploiter une vulnérabilité du logiciel de votre serveur Web pour prendre le contrôle du serveur Web ou du système d’exploitation sous-jacent. Les formulaires Web constituent un maillon faible sur de nombreux sites Web et font l’objet d’un large éventail d’attaques.
Le contrôle de cohérence des champs de formulaire vérifie tous les éléments suivants :
- Si un champ est envoyé à l’utilisateur, le contrôle garantit qu’il est renvoyé par l’utilisateur.
-
Le contrôle applique les longueurs et les types de champs HTML.
Remarque :
-
Le contrôle de cohérence des champs de formulaire applique les restrictions HTML relatives au type et à la longueur des données, mais ne valide pas les données des formulaires Web. Vous pouvez utiliser la vérification Formats de champs pour définir 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 qui sont envoyés au client. Le même champ masqué sera supprimé par ADC lorsque le client soumettra le formulaire. Si un code JavaScript côté client effectue un calcul de somme de contrôle dans les champs du formulaire et vérifie la même somme de contrôle au niveau du backend, cela peut entraîner une panne de l’application. Dans ce scénario, il est recommandé d’assouplir le champ masqué de cohérence des champs de formulaire du pare-feu de l’application « as_fid » par rapport au calcul de la 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 renvoyer des données.
- Si un champ est en lecture seule ou masqué, le contrôle vérifie que les données n’ont pas changé.
- Si un champ est une zone de liste ou un champ de bouton radio, le contrôle 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 enfreint un ou plusieurs contrôles de cohérence des champs de formulaire et que vous n’avez pas configuré le Web App Firewall pour autoriser ce formulaire Web à enfreindre les contrôles de cohérence des champs 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, Enregistrer, Apprendre et Statistiques.
Vous configurez également la cohérence des champs sans session dans l’onglet Général. Si la cohérence des champs sans session est activée, le Web App Firewall vérifie uniquement la structure du formulaire Web, supprimant ainsi les parties du contrôle de cohérence des champs de formulaire qui dépendent de la gestion des informations de session. Cela peut accélérer le contrôle de cohérence des champs de formulaire avec peu de problèmes 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 Activé. 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 assouplissements pour le contrôle 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 portant le nom UserType :
^UserType$ <!--NeedCopy-->
-
Choisissez les champs de formulaire dont le nom commence par UserType_ et est suivi d’une chaîne commençant par une lettre ou un chiffre et composée de une à vingt et une lettres, de chiffres ou d’une apostrophe ou d’un tiret :
^UserType_[0-9A-Za-z][0-9A-Za-z'-]{0,20}$ <!--NeedCopy-->
-
Choisissez les champs de formulaire dont le nom commence par Turkish-UserType_ et qui sont par ailleurs identiques à ceux de l’expression précédente, sauf qu’ils peuvent contenir des caractères spéciaux turcs partout :
^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 des actions des champs de formulaire :
-
Choisissez les URL commençant par
http://www.example.com/search.pl?
et contenant n’importe quelle chaîne après la requête, à l’exception d’une nouvelle requête :^http://www[.]example[.]com/search[.]pl?[^?]*$ <!--NeedCopy-->
-
Choisissez des URL qui commencent par
http://www.example-español.com
et dont les chemins et les noms de fichiers se composent de lettres majuscules et minuscules, de chiffres, de caractères spéciaux non ASCII et de symboles sélectionnés dans le chemin. Le caractère ñ et tous les autres caractères spéciaux sont représentés sous forme de chaînes UTF-8 codées contenant le code hexadécimal attribué à chaque caractère spécial du 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 très familier avec les expressions régulières au format PCRE, vérifiez toutes les expressions régulières que vous écrivez. Assurez-vous qu’ils définissent exactement l’URL que vous souhaitez 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é.