Réponses:
L'obfuscation est un moyen «d'obscurcir» la véritable signification et l'intention de votre code javascript. Certains sites l'utilisent comme un obstacle pour les personnes qui souhaitent copier / emprunter leur code. D'autres sites l'utilisent pour masquer l'intention réelle du code.
Quelques formes d'obscurcissement:
L'obscurcissement n'est pas en soi un mal, mais il peut être utilisé pour essayer de cacher une mauvaise intention et c'est probablement à cela qu'AVG s'opposait. Il a détecté tellement d'obscurcissement qu'il ne pouvait pas dire si le javascript tentait de faire quelque chose qu'il essayait d'empêcher. En tant que tel, il a déclaré le code comme non sûr par défaut car il ne peut pas vérifier que le code semble correct.
1
et 2
sont également effectués par des compresseurs javascript. Les compresseurs masquent le code comme un effet secondaire, mais ce n'est pas leur objectif principal; leur objectif principal est de rendre le javascript plus petit, de réduire la bande passante.
L'obfuscation fait référence à la dissimulation du sens voulu de quelque chose.
Dans ce cas, un extrait de code JavaScript clairement lisible, tel que
window.onload = function() { alert("Hello " + username) };
peut être remplacé par
var _0xc5b2=["\x6F\x6E\x6C\x6F\x61\x64",
"\x48\x65\x6C\x6C\x6F\x20"];window[_0xc5b2[0]]=
function (){alert(_0xc5b2[1]+username);} ;
ou même
eval(unescape("var%20_0xc5b2%3D%5B%22onload%22%2C%22Hello%20%22%5D%3Bwindow"+
"%5B_0xc5b2%5B0%5D%5D%3Dfunction%20%28%29%7Balert%28_0xc5b2%5B1%5D+username"+
"%29%3B%7D%20%3B"));
Les trois extraits de code font exactement la même chose, mais seule la lecture du premier vous permettra de comprendre facilement ses intentions.
Apparemment, AVG tente de comprendre l'objectif du code JavaScript avant d'autoriser son exécution. Lorsque le code est obscurci, AVG échouera probablement. D'où l'avertissement.
Cela étant dit, certains sites Web masquent leur JavaScript non pas à cause de mauvaises intentions, mais pour rendre difficile le vol de leur travail. L'obfuscation est généralement inutile si elle est utilisée à cette fin, mais le fait est que l'obfuscation ne signifie pas nécessairement de mauvaises intentions.