如何隐藏或加密 JavaScript 代码?

IT技术 javascript encryption obfuscation
2021-02-28 23:24:07

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

6个回答

你可以混淆它,但没有办法完全保护它。

示例混淆器:https : //obfuscator.io

如果我将 YouTube 视频 URL 保存在变量中,并且在用户输入正确的密码后,URL 将输入 Iframe。问题是它会保护源代码中的 youtube url 以及 chrome 检查器。我希望用户只能在我的网站上看到视频而无法复制网址?但我想用 JavaScript 或 PHP 做到这一点
2021-04-25 23:24:07
它工作正常并且默认选项不返回错误。谢谢!
2021-05-08 23:24:07
使用 Encode.js:encodejs.devincity.com
2021-05-09 23:24:07
您可以在源代码视图中完全隐藏它,但使用 Chrome Inspector 或其他工具的一些高级知识可以看到它。
2021-05-15 23:24:07

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

你可以使用一些技巧。最明显的方法之一是使用 javascript 混淆器。

再说一次,混淆只能防止随意窥探,并不能防止人们提升和使用您的代码。

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

虽然每个人都普遍同意 Javascript 加密是一个坏主意,但有一些小用例表明减缓攻击总比没有好。您可以从YUI Compressor(如@Ben Alpert)或 JSMin、Uglify 或更多内容开始。

但是,我想真正“隐藏内容”的主要情况是在发布电子邮件地址时。请注意,当您单击“检查元素”时,Chrome 会出现问题。它会显示您的原始代码:每次。这就是为什么混淆通常被认为是更好的方法。

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

虽然不完全是纯 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>

也许这足以减缓一些垃圾邮件机器人的速度。我还没有收到任何垃圾邮件(!还没有)。

另一种选择是cloakedjs.com,它混淆、加密并添加了调试预防和域锁定。仍然不是 100% 安全......但话又说回来,它在浏览器中。
2021-04-17 23:24:07

最好的压缩器之一(不是专门的混淆器)是YUI 压缩器

提供的链接无效
2021-05-15 23:24:07

JavaScript 是一种脚本语言,因此在 JavaScript 运行时解释和执行它之前一直保持人类可读的形式。

部分隐藏它的唯一方法,至少对技术含量较低的人来说,是混淆。

混淆使人类更难阅读它,但对于精通技术的人来说并非不可能。