【转】Javascript代码保护的意义

原文地址http://www.meebe.net/blog/article/web/js_protect.html

目前网页开发的现状,由于html5的出现,js再次成为最流行的客户端代码开发工具,js的强大自不用说,但其入门门槛由于他的大部分IDE落后且调试困难浏览器兼容大不相同变的有一定的高度,使得很多初学者知难而退。但是这几年逐渐流行的jQuery库使得跨浏览器兼容性大大提高,Javscript又再次回到了大部分人的视线中。meebe.net

首先不得不承认,javascript没有办法完全的保护,只要有心,有时间,任何的加密对他都是徒劳的。但是这完全不能当成不加密的理由,要知道,你所有的winform代码只要经过cpu处理,也是可以完全反汇编的。也就是说:

1.js加密的目的是加大盗-窃者破解和理解代码的难度,而不是为了防止你的js文件不被人窃取。

2.js文件保护的目的是提高窃取门槛,加大窃取成本,阻止猪窃取了你的葱而装大象的情况。

当然如果能熟练且轻松绕过以上两点而窃取你js文件的人,应该就不会在意你所写的js有多少技术含量了吧。

Javascript文件保护措施

1.禁止右键菜单:oncontextmenu="returnfalse"  

2.禁止托拽:ondragstart="returnfalse"  

3.禁止选择:

onselectstart="returnfalse"onselect="document.selection.empty()"

onmouseup="document.selection.empty()" 

4.禁止拷贝:oncopy="document.selection.empty()"onbeforecopy="returnfalse"  

5.禁止保存<noscript><iframesrc='..'></iframe></noscript>

注:以上方法能防止简单的保存你的js文件,当然如果人家整站下载,或者直接去临时文件夹里找你的js,那就没办法了,如果盗-窃者很闲的话。那我们就继续采用下面的方法加密,让他看你的原文件吧。

Javascript文件加密

原理简单的不能再简单,就是替换变量,用转义字符替换你的字符串,把整个js变成一个字符串,然后随便加密替换,最后用eval来解释他。最后把整个js文件压缩下,没有注释,没有换行,没有空格,一般人都会看到吐血。

说了半天不够爽,总不能让大家手动加密和替换吧,以下是我的御用在线加密工具,jQuery就是用其中一个加密和压缩的:

http://www.javascriptobfuscator.com/Default.aspx

http://dean.edwards.name/packer/

这2网站只提供加密,不提供解密,其实你解密了看得人也很痛苦,没有注释,没有格式,全是abcd这样无意义的变量,真有心想学你js的人,那就让他学吧。你如果真的变态,那你不妨两边混合加密几次,保准没人看得懂,不过估计浏览器解释起来也挺费劲的。

特别友情提醒:meebe.net

1.加密后记着留住你原本的js文件,不要到时候改bug都改不了了。

2.加密后如果出现运行不了,请把你加密前的文件每次函数结束都加上";",因为去除换行后,浏览器解释器没碰到";"有时候会报错。如果加密后有错,请务必多加几个";"在每个语句结束或者定义结束的时候。

3.转载请注明出处,谢谢。meebe.net

相关推荐