Format de codage de caractères PCRE

Le système d’exploitation Citrix ADC prend en charge l’entrée directe de caractères dans le jeu de caractères ASCII imprimable uniquement (caractères avec codes hexadécimaux compris entre HEX 20 (ASCII 32) et HEX 7E (ASCII 127). Pour inclure un caractère dont le code est en dehors de cette plage dans votre configuration de Web App Firewall, vous devez entrer son code hexadécimal UTF-8 en tant qu’expression régulière PCRE.

De nombreux types de caractères nécessitent un encodage à l’aide d’une expression régulière PCRE si vous les incluez dans votre configuration de Web App Firewall en tant qu’URL, nom de champ de formulaire ou expression d’objet sécurisé. Il s’agit notamment des éléments suivants :

  • Caractères ASCII supérieurs. Caractères avec encodages de HEX 7F (ASCII 128) à HEX FF (ASCII 255). Selon la table de caractères utilisée, ces encodages peuvent faire référence à des codes de contrôle, à des caractères ASCII avec des accents ou d’autres modifications, à des caractères alphabétiques non latins et à des symboles non inclus dans le jeu de caractères ASCII de base. Ces caractères peuvent apparaître dans les URL, les noms de champs de formulaire et les expressions d’objet sécurisé.
  • Caractères à deux octets. Caractères avec encodages qui utilisent deux mots de 8 octets. Les caractères sur deux octets sont utilisés principalement pour représenter le texte chinois, japonais et coréen en format électronique. Ces caractères peuvent apparaître dans les URL, les noms de champs de formulaire et les expressions d’objet sécurisé.

    Caractères de contrôle ASCII. Caractères non imprimables utilisés pour envoyer des commandes à une imprimante. Tous les caractères ASCII dont les codes hexadécimaux sont inférieurs à HEX 20 (ASCII 32) entrent dans cette catégorie. Toutefois, ces caractères ne devraient jamais apparaître dans une URL ou un nom de champ de formulaire et apparaîtraient rarement, voire jamais, dans une expression d’objet sécurisée.

L’appliance Citrix ADC ne prend pas en charge l’ensemble du jeu de caractères UTF-8, mais uniquement les caractères présents dans les huit jeux de caractères suivants :

  • Anglais US (ISO-8859-1). Bien que l’étiquette indique « Anglais US », le Web App Firewall prend en charge tous les caractères du jeu de caractères ISO-8859-1, également appelé jeu de caractères Latin-1. Ce jeu de caractères représente entièrement la plupart des langues modernes d’Europe occidentale et représente tous les caractères rares dans le reste.

  • Chinois traditionnel (Big5). Le Web App Firewall prend en charge tous les caractères du jeu de caractères BIG5, qui comprend tous les caractères chinois traditionnels (idéogrammes) couramment utilisés en chinois moderne tels que parlés et écrits à Hong Kong, Macao, Taïwan, et par de nombreuses personnes d’origine ethnique chinoise qui vivent en dehors de la Chine continentale.

  • Chinois simplifié (GB2312). Le Web App Firewall prend en charge tous les caractères du jeu de caractères GB2312, qui inclut tous les caractères chinois simplifiés (idéogrammes) couramment utilisés en chinois moderne, tels que parlés et écrits en Chine continentale.

  • Japonais (SJIS). Le Web App Firewall prend en charge tous les caractères du jeu de caractères Shift-JIS (SJIS), qui comprend la plupart des caractères (idéographes) couramment utilisés dans le japonais moderne.

  • japonais (EUC-JP). Le Web App Firewall prend en charge tous les caractères du jeu de caractères EUC-JP, qui inclut tous les caractères (idéographes) couramment utilisés dans le japonais moderne.

  • coréen (EUC-KR). Le Web App Firewall prend en charge tous les caractères du jeu de caractères EUC-KR, qui inclut tous les caractères (idéographes) couramment utilisés en coréen moderne.

  • turc (ISO-8859-9). Le Web App Firewall prend en charge tous les caractères du jeu de caractères ISO-8859-9, qui inclut toutes les lettres utilisées en turc moderne.

  • Unicode (UTF-8). Le Web App Firewall prend en charge certains autres caractères du jeu de caractères UTF-8, y compris ceux utilisés dans le russe moderne.

Lors de la configuration du Web App Firewall, vous entrez tous les caractères non-ASCII en tant qu’expressions régulières au format PCRE à l’aide du code hexadécimal attribué à ce caractère dans la spécification UTF-8. Les symboles et les caractères du jeu de caractères ASCII normal, auquel on attribue des codes à deux chiffres dans ce jeu de caractères, sont affectés les mêmes codes dans le jeu de caractères UTF-8. Par exemple, le point d’exclamation (!), auquel est attribué le code hexadécimal 21 dans le jeu de caractères ASCII, est également hexadécimal 21 dans le jeu de caractères UTF-8. Les symboles et les caractères d’un autre jeu de caractères pris en charge ont un jeu de codes hexadécimaux appariés qui leur sont assignés dans le jeu de caractères UTF-8. Par exemple, la lettre a avec un accent aigu (á) est assignée le code UTF-8 C3 A1.

La syntaxe que vous utilisez pour représenter ces codes UTF-8 dans la configuration du Web App Firewall est “\xNN” pour les caractères ASCII ; “\xNN\xNN” pour les caractères non ASCII utilisés en anglais, russe et turc ; et “\xNN\xNN\xNN” pour les caractères utilisés en chinois, japonais et coréen. Par exemple, si vous voulez représenter un ! dans une expression régulière du Web App Firewall en tant que caractère UTF-8, vous devez taper \x21. Si vous voulez inclure un á, vous devez taper \xC3\xA1.

Remarque :

Normalement, vous n’avez pas besoin de représenter les caractères ASCII au format UTF-8, mais lorsque ces caractères risquent de confondre un navigateur Web ou un système d’exploitation sous-jacent, vous pouvez utiliser la représentation UTF-8 du caractère pour éviter cette confusion. Par exemple, si une URL contient un espace, vous pouvez l’encoder en tant que x20 pour éviter de confondre certains navigateurs et logiciels de serveur Web.

Vous trouverez ci-dessous des exemples d’URL, de noms de champs de formulaire et d’expressions d’objet sécurisé contenant des caractères non-ASCII qui doivent être entrés en tant qu’expressions régulières au format PCRE à inclure dans la configuration du Web App Firewall. Chaque exemple montre en premier l’URL réelle, le nom du champ ou la chaîne d’expression, suivi d’une expression régulière au format PCRE.

  • URL contenant des caractères ASCII étendus.

    URL réelle : http://www.josénuñez.com

    URL encodée : ^http://www\[.\]jos\\xC3\\xA9nu\\xC3\\xB1ez\[.\]com$

  • Une autre URL contenant des caractères ASCII étendus.

    URL réelle : http://www.example.de/trömso.html

    URL encodée : ^http://www[.]example[.\]de/tr\xC3\xB6mso[.]html$

    Nom de champ de formulaire contenant des caractères ASCII étendus.

    Nom actuel : nome_do_usuário

    Nom encodé : ^nome_do_usu\xC3\xA1rio$

  • Expression d’objet sécurisée contenant des caractères ASCII étendus.

    Expression non encodée [A-Z]{3,6}¥[1-9\][0-9]{6,6}

    Expression codée : [A-Z]{3,6}\xC2\xA5[1-9][0-9]{6,6}

Vous pouvez trouver plusieurs tables qui incluent l’ensemble du jeu de caractères Unicode et les encodages UTF-8 correspondants sur Internet. Un site Web utile contenant ces informations est disponible dans le tableau suivant.

http://www.utf8-chartable.de/unicode-utf8-table.pl

Pour que les caractères du tableau de ce site Web s’affichent correctement, vous devez disposer d’une police Unicode appropriée installée sur votre ordinateur. Si vous ne le faites pas, l’affichage visuel du caractère peut être erroné. Même si vous n’avez pas de police appropriée installée pour afficher un caractère, la description et les codes UTF-8 et UTF-16 de cet ensemble de pages Web sont corrects.

Format de codage de caractères PCRE