Answers:
混淆是一种“模糊”您的javascript代码的真实含义和意图的方法。一些站点将其用作想要复制/借用其代码的人们的障碍。其他站点使用它作为隐藏代码实际意图的手段。
某些形式的混淆:
晦涩本身并不是邪恶的,但是它可以用来掩饰邪恶的意图,而这可能是AVG反对的。它检测到太多的晦涩,无法分辨javascript是否正在尝试执行它试图阻止的操作。因此,它默认情况下将代码声明为不安全,因为它无法验证代码看起来还可以。
1
并且2
也由javascript压缩程序完成。压缩器会将代码混淆为副作用,但这不是它们的主要目的。它们的主要目的是使javascript较小,以减少带宽。
混淆是指隐藏事物的预期含义。
在这种情况下,一个清晰可读的JavaScript代码段(例如
window.onload = function() { alert("Hello " + username) };
可以替换为
var _0xc5b2=["\x6F\x6E\x6C\x6F\x61\x64",
"\x48\x65\x6C\x6C\x6F\x20"];window[_0xc5b2[0]]=
function (){alert(_0xc5b2[1]+username);} ;
甚至
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"));
所有这三个代码段都执行完全相同的操作,但是仅阅读第一个代码段将使您轻松理解其意图。
显然,AVG试图在允许执行之前先了解JavaScript代码的用途。混淆代码后,AVG可能会失败。因此,警告。
话虽如此,有些网站不是因为恶意而混淆了他们的JavaScript,而是使其难以窃取他们的作品。如果将混淆用于此目的通常是没有用的,但是重点是混淆并不一定意味着恶意。