Caractères invisibles dans le code
Dans le code source, les caractères invisibles ne sont pas qu’une gêne : c’est un risque de sécurité. Un contrôle bidirectionnel peut faire afficher une ligne dans un ordre et la compiler dans un autre, et un caractère de largeur nulle peut casser un identifiant qui semble identique à un autre. Cet outil les expose et les supprime sans toucher au moindre caractère visible.
Plus : éléments trouvés, vue rayons X et options
Vue rayons X
Votre texte avec chaque caractère caché exposé sous forme d’étiquette. Survolez pour voir son nom Unicode.
Ce qui a été trouvé
| Point de code | Caractère | Nombre | Action |
|---|
L’attaque par réordonnancement (Trojan Source)
Les caractères de forçage bidirectionnel (comme U+202E) réordonnent l’affichage du texte qui suit. Dans un commentaire ou une chaîne, ils peuvent faire voir au relecteur une logique et faire exécuter au compilateur une autre. L’attaque a été documentée en 2021 (Boucher et Anderson) et touche la plupart des langages. Chargez l’exemple dans l’outil et ouvrez la vue rayons X : les puces rouges marquent les caractères de forçage et d’isolement.
Autres risques dans le code
- Codes de contrôle de sessions de terminal (ESC, U+001B) qui cassent les analyseurs.
- Espaces insécables qui se glissent dans l’indentation et cassent les langages sensibles aux espaces.
- BOM (U+FEFF) en début de fichier, qui corrompt l’analyse JSON et les en-têtes CSV.
Questions fréquentes
Comment ces caractères entrent-ils dans mon code ?
En copiant depuis des pages web, des PDF, des chats d’IA ou des documents. Ils peuvent aussi être insérés exprès dans une attaque par réordonnancement.
Le nettoyage change-t-il la logique de mon code ?
Non. Il supprime seulement les caractères invisibles et normalise les espaces inhabituelles ; chaque caractère visible reste identique, dans le même ordre.