在JavaScript 开发中怎样做代码混淆

JavaScript07

在JavaScript 开发中怎样做代码混淆,第1张

推荐用 Yahoo YUI Compressor,或 白度一个压缩工具

所谓 JavaScript 混淆,基本就是

1 重命名局部变量(YUI Compressor 也可以配置参数,拒绝变量重命名)

2 移除代码空白(Space、Tab、Line-Feed)

在相同语义的情况下压缩代码,比如去掉末尾分号(Remove Terminator Semicolons),常量替换(Constant Propagation)

混淆的作用就是用无意义的关键字符替代原来有意义的关键字符,让浏览者“看不懂”代码,不了解代码的运行逻辑,也就无法复用。混淆不同于加密解密,因为原来有意义的字符已经被替换了,不存在算法上的反推,任何的技术不可能再得出原来的那些有意义的字符。所以理论上,混淆后的代码无法解密。但因为它的整个运算逻辑关系链是完整的,与混淆前的代码关系链是完全一致的,所以非要“破解”,只能说摸清它的逻辑关系链,人为去做的话,烧脑又复杂。技术上需要一定的运算能力来做这个工作,比如云计算甚至超级计算机,但即便“破解”,它也是只能分析出一个函数大致是干什么用的,原来的关键字符名称还是不可能得出。