这个问题已经在这里有一个答案:
- 我怎么能混淆(保护)的JavaScript? [关闭] 24个答案
有什么办法可以隐藏或加密的JavaScript代码,以防止他人查看,复制和/或修改专有程序?
这个问题已经在这里有一个答案:
有什么办法可以隐藏或加密的JavaScript代码,以防止他人查看,复制和/或修改专有程序?
你可以混淆,但也没有完全保护它的方式。
例如混淆: https://obfuscator.io http://www.javascriptobfuscator.com/Default.aspx
不,这是不可能的。 如果它运行在客户端浏览器上,它必须由客户端浏览器下载。 这是非常微不足道的使用Fiddler检查HTTP会话,并得到任何下载的js文件。
有可以使用的招数。 其中最明显的是使用一个JavaScript混淆。
话又说回来,混淆只会阻止偶然窃取,并防止犯规人们提起,并使用你的代码。
您可以在Flash影片的形式尝试编译动作脚本。
虽然每个人都普遍认同的Javascript加密是一个坏主意 ,有几个小的使用情况下,放慢进攻总比没有好。 你可以开始YUI压缩机 (如@Ben阿尔珀特)表示,或JSMin,丑化,或更多。
然而,主要的情况下,我想真正“隐藏的东西”是当我发布的电子邮件地址。 注意,还有当你点击“检查元素”铬的问题。 它会显示你的原始代码:每次。 这就是为什么混淆通常被视为是一个更好的方式去。
关于这一点,我采取了双管齐下的攻击,纯粹是为了防垃圾邮件程序慢下来。 我模糊处理/再缩小JS,然后通过编码器再次运行(同样,这第二个步骤是在铬完全没有意义)。
虽然不完全是一个纯JavaScript编码器,最好的HTML编码器,我发现是http://hivelogic.com/enkoder/ 。 它会变成这样:
<script type="text/javascript">
//<![CDATA[
<!--
var c=function(e) { var m="mail" + "to:webmaster";var a="somedomain"; e.href = m+"@"+a+".com";
};
//-->
//]]>
</script>
<a href="#" onclick="return c(this);"><img src="images/email.png" /></a>
这个:
<script type="text/javascript">
//<![CDATA[
<!--
var x="function f(x){var i,o=\"\",ol=x.length,l=ol;while(x.charCodeAt(l/13)!" +
"=50){try{x+=x;l+=l;}catch(e){}}for(i=l-1;i>=0;i--){o+=x.charAt(i);}return o" +
".substr(0,ol);}f(\")87,\\\"meozp?410\\\\=220\\\\s-dvwggd130\\\\#-2o,V_PY420" +
"\\\\I\\\\\\\\_V[\\\\\\\\620\\\\o710\\\\RB\\\\\\\\610\\\\JAB620\\\\720\\\\n\\"+
"\\{530\\\\410\\\\WJJU010\\\\|>snnn|j5J(771\\\\p{}saa-.W)+T:``vk\\\"\\\\`<02" +
"0\\\\!610\\\\'Dr\\\\010\\\\630\\\\400\\\\620\\\\700\\\\\\\\\\\\N730\\\\,530" +
"\\\\2S16EF600\\\\;420\\\\9ZNONO1200\\\\/000\\\\`'7400\\\\%n\\\\!010\\\\hpr\\"+
"\\= -cn720\\\\a(ce230\\\\500\\\\f730\\\\i,`200\\\\630\\\\[YIR720\\\\]720\\\\"+
"r\\\\720\\\\h][P]@JHADY310\\\\t230\\\\G500\\\\VBT230\\\\200\\\\Clxhh{tzra/{" +
"g0M0$./Pgche%Z8i#p`v^600\\\\\\\\\\\\R730\\\\Q620\\\\030\\\\730\\\\100\\\\72" +
"0\\\\530\\\\700\\\\720\\\\M410\\\\N730\\\\r\\\\530\\\\400\\\\4420\\\\8OM771" +
"\\\\`4400\\\\$010\\\\t\\\\120\\\\230\\\\r\\\\610\\\\310\\\\530\\\\e~o120\\\\"+
"RfJjn\\\\020\\\\lZ\\\\\\\\CZEWCV771\\\\v5lnqf2R1ox771\\\\p\\\"\\\\tr\\\\220" +
"\\\\310\\\\420\\\\600\\\\OSG300\\\\700\\\\410\\\\320\\\\410\\\\120\\\\620\\" +
"\\q)5<: 0>+\\\"(f};o nruter};))++y(^)i(tAedoCrahc.x(edoCrahCmorf.gnirtS=+o;" +
"721=%y;++y)87<i(fi{)++i;l<i;0=i(rof;htgnel.x=l,\\\"\\\"=o,i rav{)y,x(f noit" +
"cnuf\")" ;
while(x=eval(x));
//-->
//]]>
</script>
也许这是不够的几个垃圾邮件机器人的放缓。 我没有任何垃圾邮件通过使用这个(!还)到来。
一个最好的压缩机(未具体混淆器)的是锐压缩机 。
JavaScript是一种脚本语言,因此停留在人类可读的形式,直到它的时间为它由JavaScript运行时被解释和执行。
部分地隐藏起来,至少从技术性较低的心中唯一的办法,就是混淆。
混淆使得它更难给人阅读的,但不是不可能的技术头脑。
如果你有特别想隐藏(如专有的算法)什么,就把服务器上,或把它放在一个Flash影片,并通过JavaScript调用它。 编写ActionScript非常相似,编写JavaScript,您可以:JavaScript与ActionScript之间的通信。 你可以使用Silverlight相同,但Silverlight不具有穿透闪存一样。
但是,请记住,任何手机上可以运行你的JavaScript,而不是Silverlight的或Flash,所以你削弱您的移动用户,如果你使用Flash或Silverlight去。
保护您的代码比较安全的方法是不给它拿走。 与客户端部署,也没有避免对代码有客户端访问。
所以,简单的答案是:你不能做到这一点
较长的答案是考虑Flash或Silverlight。 虽然我相信Silverlight将很乐意放弃与客户端上运行的反射它的秘密。
我不知道,如果事情simular使用Flash平台的存在。