什么是JavaScript混淆为什么它是一个威胁?

分享于 

3分钟阅读

电脑

  繁體 雙語

问题:

AVG最近告诉我一个网页被阻止,因为的JavaScript混淆

为什么网页被阻止了到底是什么意思?


回答 1:

混淆是"模糊"的一种方法,它的真正意义和意图是你的javascript代码。 有些网站将它用作那些想复制/借用他们的代码的人的障碍。 其他网站使用它作为隐藏代码实际意图的手段。

隐藏的某些形式:

  • 自动将变量重命名为简短无意义的名称,使代码更易于阅读和难以理解。
  • 删除所有多余的空格和换行符,使代码成为一条很长的长直线。
  • 创建代码自生成部分,以便首次运行代码以创建实际代码以执行预期操作。
  • 使用字符代码和字符串操作结合eval而不是普通的javascript代码来构造实际运行的代码。
  • to不是本身恶意的,但它可以用来隐藏一个恶意的意图,这也许是AVGReact的原因。 它检测到这样的隐蔽性,它无法判断javascript是否试图做一些试图阻止的事情。 由于它在默认情况下声明代码不安全,因为它不能验证代码是否正常。


回答 2:

混淆是指隐藏某事物的含义。

在本例中,一个清晰易读的JavaScript Fragment,比如


window.onload = function() { alert("Hello" + username) };



可以被替换为


var _0xc5b2=["x6Fx6Ex6Cx6Fx61x64",


"x48x65x6Cx6Cx6Fx20"];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{alert%28_0xc5b2%5B1%5D+username"+


"%29%3B}%20%3B"));



所有三个代码段完全相同,但只读取第一个代码将允许你容易理解它的意图。

显然,AVG在允许执行代码之前试图理解JavaScript代码的用途。 当代码被混淆时,AVG可能会失败。 因此警告。

也就是说,一些网站不会因为恶意的意图而混淆他们的JavaScript,而是难以偷偷他们的工作。 如果用于这里目的,模糊处理通常是无用的,但关键是模糊处理不一定意味着错误。



相关文章