Certains caractĂšres unicodes sont invisibles. Pas seulement les \n ou \t, non, vraiment invisibles. Genre leur existence est dâĂȘtre un caractĂšre invisible.
Un peu comme un trait dâunion conditionnel qui nâest visible que dans certains cas, et invisible autrement. Sauf quâici, je parle dâun caractĂšre unicode (corĂ©en, en lâoccurrence) qui est invisible mĂȘme dans le code source. Il est lĂ si on parle les donnĂ©es sur le disque, mais aucun Ă©diteur de texte faisant un rendu de ces caractĂšres ne vous le montrera, car il est invisible.
Dans cet exemple, il est montrĂ© comment on peut tout de mĂȘme utiliser ce caractĂšre comme nom de variable, et donc lui assigner des valeurs.
Dans lâexemple, on fait un simple "ping" sur Google.com (un truc classique). La variable reçoit alors un code de retour.
La backdoor, câest que la variable est ensuite envoyĂ©e Ă "exec()", qui envoie des commandes au shell systĂšme. Donc il suffit que "google.com" renvoie un code contenant â au hasard â quelque chose comme "rm -rf /" et hop : un simple ping se transforme en effacement du disque dur !
⊠Et aucun Ă©diteur de texte ne vous montrera quoi que ce soit dâanormal dans le code source : la variable fautive Ă©tant INVISIBLE dans le code source.
Câest violent quand-mĂȘmeâŠ
Encore une fois : ça montre quâil est bien joli de vouloir mettre de lâunicode partout (« yeah, câest inclusif ! ») mais quand câest pas fait sĂ©rieusement⊠voilĂ .
Voir aussi cet exemple. Ou ça. Ou encore ça, ou cet article oĂč je dĂ©nonce les problĂšmes Ă mettre de lâUnicode partout sans rĂ©flĂ©chir.
La derniĂšre version de SublimeText permet dâafficher le code dâĂ©chappement des caractĂšres non ASCII, par dĂ©faut. Je lâavais dĂ©sactivĂ© car câest chiant. Mais si ça continue, il va falloir le laisser activĂ©.
â (
permalink)