如何隐藏或加密JavaScript代码?

如何隐藏或加密JavaScript代码?,javascript,encryption,obfuscation,Javascript,Encryption,Obfuscation,有没有办法隐藏或加密JavaScript代码以防止人们查看、复制和/或修改专有程序?您可以混淆它,但无法完全保护它 模糊器示例: 不,这是不可能的。如果它在客户端浏览器上运行,则必须由客户端浏览器下载。使用Fiddler检查HTTP会话并获取任何下载的js文件非常简单 你可以使用一些技巧。其中最明显的一个是使用javascript模糊器 同样,混淆只会防止随意的窥探,而不会阻止人们提取和使用您的代码 您可以尝试以flash电影的形式编译动作脚本。最好的压缩器(不是专门的模糊器)之一是。保护代码的

有没有办法隐藏或加密JavaScript代码以防止人们查看、复制和/或修改专有程序?

您可以混淆它,但无法完全保护它

模糊器示例:
不,这是不可能的。如果它在客户端浏览器上运行,则必须由客户端浏览器下载。使用Fiddler检查HTTP会话并获取任何下载的js文件非常简单

你可以使用一些技巧。其中最明显的一个是使用javascript模糊器

同样,混淆只会防止随意的窥探,而不会阻止人们提取和使用您的代码


您可以尝试以flash电影的形式编译动作脚本。

最好的压缩器(不是专门的模糊器)之一是。

保护代码的唯一安全方法是不泄露代码。使用客户端部署,无法避免客户端访问代码

所以简单的回答是:你不能这么做

较长的答案是考虑闪光灯或银光灯。虽然我相信silverlight会很乐意在客户机上运行reflector时泄露它的秘密


我不确定flash平台是否存在simular。

JavaScript是一种脚本语言,因此在JavaScript运行时对其进行解释和执行之前,它一直以人类可读的形式存在

部分隐藏它的唯一方法,至少对技术性较差的人来说,是混淆


模糊处理会使人们更难阅读,但对于技术娴熟的人来说并非不可能。

如果你有什么特别想隐藏的东西(如专有算法),请将其放到服务器上,或将其放在Flash电影中并用JavaScript调用。编写ActionScript与编写JavaScript非常相似,您可以在JavaScript和ActionScript之间进行通信。你可以用Silverlight做同样的事情,但是Silverlight没有Flash的穿透能力


但是,请记住,任何手机都可以运行JavaScript,但不能运行Silverlight或Flash,因此如果您使用Flash或Silverlight,您将损害您的移动用户。

虽然大家都普遍认为JavaScript加密是一种安全的加密方式,但在一些小的使用案例中,减缓攻击比什么都没有要好。 你可以从(如@Ben Alpert)所说的,或者JSMin,Uglify,或者更多开始

然而,我想真正“隐藏东西”的主要情况是当我发布电子邮件地址时。请注意,当您单击“检查元素”时,存在Chrome问题。它将显示您的原始代码:每次。这就是为什么模糊处理通常被认为是一种更好的方法

在这一点上,我采取了双管齐下的攻击,纯粹是为了减缓垃圾邮件机器人的速度。我混淆/缩小js,然后通过编码器再次运行它(同样,第二步在chrome中完全没有意义)

虽然不是一个纯粹的Javascript编码器,但我发现最好的html编码器是。它将改变这一点:

<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>

//
//]]>

也许这足以让一些垃圾机器人慢下来。我还没有收到任何使用此(!尚未)发送的垃圾邮件。

尝试此链接:-JeppIt工作正常,默认选项下不会返回任何错误。非常感谢。使用Encode.js:encodejs.devincity.com您可以在源代码视图中完全隐藏它,但使用Chrome Inspector或其他工具的高级知识,它将可见。如果我将YouTube视频URL保存在变量中,并且在用户输入正确的密码后,URL将输入Iframe。问题是它是否能在源代码中保护youtube url以及chrome inspector。我想,用户只能看到我的网站视频,无法复制的网址?但我想用JavaScript或PHP9来实现这一点,以防有人看到这一点,并没有意识到这已经不是2009年了,不要这样做。Flash和Silverlight现在几乎已经过时了。提供的链接不起作用。另一种选择是模糊、加密,并添加调试预防和域锁定。仍然不是100%安全。。。但话说回来,它是在浏览器中。