将JS代码偷偷藏起来

105 阅读2分钟

作为前端开发,经常会碰到比较尴尬的事情。比如,有些小功能吧虽说不太复杂,但就是不想辛辛苦苦开发的功能被别人Ctrl+A, Ctrl+C就直接复制走了!于是乎,我开始琢磨如何把Javascript加上一把锁,作为防止别人盗用最后的一丝丝倔强吧。

常见的脚本加密无非是脚本的混淆,将其用晦涩难懂的字符替换,但是由于太过常见,太容易被逆向分析出来,达不到预期的效果。如果想让对方摸不着头脑,势必不要走寻常路线……对此我想了以下两条路:

  1. 利用图片的像素进行编码存储信息。将Javascript源代码中的字符的码值,经过一定交叉混淆规则,放进canvas的imageData里面,再导出图片。需要运行的时候再逆向反编码回源代码,为了防止对方查到我们的目的,当然不能直接用eval执行,我们需要将这套反编码的程序再收工加各种隐式的调用方式。比如,利用set或者get方法,加装是赋值操作,让其暗中触发等等。 将代码存在图片的演示:imageCode脚本加密 (passer-by.com)

  2. 利用“零宽度空格符”的隐藏性。将javascript代码转码成空白字符,让用户察觉不到源代码中还含有看不见的代码存在。为了让用户差距不到你的调用,可以将系统方法进行重写,比如console.log。在代码中调用系统原生方法的时候,“无意间”触发。在代码中用系统原生方法很合理吧?有怎么会想到有猫腻呢? 将代码伪装成console.log的演示:hiddenCode脚本加密 (passer-by.com)