Nous avons donc la feuille de triche XSS pour tester notre filtrage XSS - mais à part un exemple de page bénigne, je ne trouve pas de données de test malfaisantes ou mal formées pour m'assurer que mon code UTF-8 peut gérer des données erronées.
Où puis-je trouver de bonnes, euh ... mauvaises données à tester? Ou qu'est-ce qu'une séquence délicate de caractères?
~𝘈Ḇ𝖢𝕯٤ḞԍНǏ𝙅ƘԸⲘ𝙉০Ρ𝗤Ɍ𝓢ȚЦ𝒱Ѡ𝓧ƳȤѧᖯć𝗱ễ𝑓𝙜Ⴙ𝞲𝑗𝒌ļṃʼnо𝞎𝒒ᵲꜱ𝙩ừ𝗏ŵ𝒙𝒚ź1234567890!@#$%^&*()-_=+[{]};:'",<.>/?
~ АḂ Ⲥ𝗗𝖤𝗙 ꞠꓧȊ𝐉𝜥ꓡ𝑀𝑵Ǭ𝙿𝑄Ŗ𝑆𝒯𝖴𝘝𝘞ꓫŸ𝜡ả𝘢ƀ𝖼ḋếᵮℊ𝙝 Ꭵ𝕛 кιṃ դ ⱺ𝓅𝘲𝕣𝖘ŧ𝑢ṽẉ𝘅 ყž1234567890! @ # $% ^ & * () -_ = + [{]}; : '", <.> /?~Ѧ𝙱ƇᗞΣℱԍҤ١𝔍К𝓛𝓜ƝȎ𝚸𝑄Ṛ𝓢ṮṺƲᏔꓫ𝚈𝚭𝜶Ꮟçძ𝑒𝖿𝗀ḧ𝗂𝐣ҝɭḿ𝕟𝐨𝝔𝕢ṛ𝓼тú𝔳ẃ⤬𝝲𝗓1234567890!@#$%^&*()-_=+[{]};:'",<.>/?
~ 𝖠Β𝒞𝘋𝙴𝓕ĢȞỈ𝕵ꓗʟ𝙼ℕ০𝚸𝗤 Հꓢ ṰǓⅤ𝔚 Ⲭ𝑌𝙕𝘢𝕤Réponses:
Découvrez le test de résistance du décodeur UTF-8 de Markus Kuhn
la source
Voir aussi Comment un fichier contenant des caractères chinois sait-il combien d'octets utiliser par caractère?- sans aucun doute, il y a d'autres questions SO qui pourraient également aider.
En UTF-8, vous obtenez les types d'octets suivants:
(La dernière ligne semble devoir lire 0xF0..0xF7; cependant, la plage de 21 bits d'Unicode (U + 0000 - U + 10FFFF) signifie que la valeur maximale valide est 0xF4; les valeurs 0xF5..0xF7 ne peuvent pas apparaître dans UTF-8 valide.)
Regarder si une séquence particulière d'octets est valide UTF-8 signifie que vous devez penser à:
En UTF-8 valide, les octets 0xF5..0xFF ne peuvent pas apparaître.
Séquences non minimales
Il existe plusieurs représentations possibles pour certains personnages. Par exemple, le caractère Unicode U + 0000 (ASCII NUL) pourrait être représenté par:
Cependant, la norme Unicode indique clairement que les trois dernières alternatives ne sont pas acceptables car elles ne sont pas minimales. Il se trouve que les octets 0xC0 et 0xC1 ne peuvent jamais apparaître dans un UTF-8 valide car les seuls caractères qui pourraient être codés par ceux-ci sont au minimum codés en tant que caractères à un octet dans la plage 0x00..0x7F.
Substituts UTF-16
Dans le plan multilingue de base (BMP), les valeurs Unicode U + D800 - U + DFFF sont réservées aux substituts UTF-16 et ne peuvent pas apparaître codées en UTF-8 valide. S'ils étaient valides en UTF-8 (ce qui, je le souligne, ils ne le sont pas), alors les substituts seraient encodés:
Mauvaises données
Ainsi, vos données BAD doivent contenir des échantillons violant ces diverses prescriptions.
Notez qu'une marque d'ordre d'octet (BOM) U + FEFF, alias espace sans coupure de largeur zéro (ZWNBSP), ne peut pas apparaître non codée en UTF-8 - les octets 0xFF et 0xFE ne sont pas autorisés en UTF-8 valide. Un ZWNBSP codé peut apparaître dans un fichier UTF-8 sous le nom 0xEF 0xBB 0xBF, mais la nomenclature est complètement superflue en UTF-8.
Il existe également des non- caractères en Unicode. U + FFFE et U + FFFF sont deux de ces non-caractères (et les deux derniers points de code dans chaque plan, U + 1FFFE, U + 1FFFF, U + 2FFFE, U + 2FFFF, ... U + 10FFFE, U + 10FFFF sont d'autres ). Ceux-ci ne devraient normalement pas apparaître dans les données Unicode pour l'échange de données, mais peuvent apparaître dans un usage privé. Voir le lien FAQ Unicode pour de nombreux détails sordides, y compris l'histoire assez complexe des non-caractères en Unicode. (Le rectificatif n ° 9: Clarification sur les non-personnages, publié en janvier 2013, fait ce que son titre suggère - clarifie la signification des non-caractères.)
la source
Vous pouvez utiliser cet outil en ligne pratique de Jeffrey Bergamini pour convertir n'importe quel texte en une chaîne UTF8 vraiment étrange d'homoglyphes.
Un typique
devenir comme ça:
la source
L'article UTF-8 de Wikipedia a un bon résumé des séquences d'octets valides / invalides. Un autre article qui mérite d'être lu est la FAQ W3C I18N: Formulaires multilingues .
la source
Du haut de ma tête:
0xff et 0xfe
Octets simples à bits élevés
Représentation multi-octets des caractères à faible octet - Un bon moyen de passer en contrebande des valeurs nulles après les premiers contrôles
Marques d'ordre des octets - Allez-vous les ignorer?
NFC contre NFD
la source