[Developper] Non le Base64 n’est pas la solution aux problèmes d’accents !

 

Bonjour à tous,

 

Cet article est à la fois un coup de gueule et une démonstration, contre ce mythe qui consiste à penser que le Base64 permet d'envoyer, recevoir, afficher ou encore manipuler du texte contenant des caractères spéciaux ou accentués sans rencontrer de problème ... ou encore de se protéger contre des hackers en pensant qu'ils ne pourront pas "déchiffrer" (même si le terme est volontairement mal choisi)...

Alors le base64 c'est quoi ?

 

Le base64 c'est une manière de transformer des caractères illisibles (binaire), en quelque chose de plus lisible et que l'on peut par conséquent manipuler.
Par exemple, lorsque l'on souhaite stocker une image...
Si j'ouvre une image avec un éditeur de texte ...

 

Et si je la transforme en base64 :

Bien entendu, c'est une représentation "textuelle".
Ce n'est donc pas forcément une jolie phrase, avec des mots qui ont un sens, mais quelque chose que l'on peut aisément copier.

 

Une perte en performances ...

 

Tout d'abord transformer une chaîne de caractères en base64 c'est de la performance ...

Le café c'est bon pour la santé

TGUgY2Fmw6kgYydlc3QgYm9uIHBvdXIgbGEgc2FudMOpICE=

 

Eh oui, ça ne paraît rien lorsqu'on n'a que 2/3 chaînes de caractères à convertir ...

Mais lorsque nous sommes dans le cadre d'un gros projet, qui devra en convertir un grand nombre. ... ça risque de faire très très mal !
Une plateforme Web par exemple, qui devrait convertir 200.000 chaînes de caractères par heure ... ça risque de vite se compliquer ...

 

Une perte en stockage

 

Comme vous pouvez le voir dans mon exemple ci-dessus ...
Une petite phrase de 31 caractères se transforme soudainement en une phrase de 48 caractères ...
Si l'on multiplie ça par 10.000 phrases ...
On obtient 310.000 caractères devenus 480.000 caractères ...
Soit 46% de caractère en plus !!!

 

Le mythe ... démystifié

Sécurité ?

Encoder du contenu en base64 ne sert pas à se protéger des hackers ...
Le base64 est réversible messieurs ( et mesdames ;) ) ... si vous y parvenez, n'importe qui peut le faire ...

Prévention des caractères spéciaux et accentués ?

Les caractères spéciaux et le base64 ... c'est à mettre dans le guide des mauvaises pratiques ...
Ce qui est important, c'est que lorsque vous envoyez des données d'un point A à un point B, elle soit encodée de la même manière !

Pour faire simple  un mec qui qui parle la langue "UTF-8"  et qui dit   :

"je suis né au paradis des fées"

à un autre mec qui parle l'ISO-8859-6.
Ce dernier risque de comprendre ceci :

"je suis né au paradis des fées"

Eh oui ... la vie est cruelle non ?

Le base64 agira de la même façon  !

 

Ci-dessus, j'encode en base64 une phrase  dans un encodage UTF-8, et je décode par la suite le base64 mais en cette fois-ci en ISO-8859-15 ....

Conclusion :

Laissez le base64 aux traitements de données binaires.

Privilégiez plutôt la rigueur d'un même encodage de bout en bout.

Pour ce qui est de la sécurité, optez pour un vrai chiffrement si vous souhaitez cacher vos données.

Partagez ce contenu

Laisser une réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *