加密 Chrome 插件?

8
有没有一种方法可以对Chrome扩展程序进行加密,以防止暴露源代码?

1
有点困惑,直到我看到标签才明白你是指Chrome扩展 :) - 你应该编辑你的问题。 - David Tang
4个回答

9
您可以使用混淆器来隐藏您的代码。市场上有很多可用的混淆器。
市场上有一些工具,如Google Closure编译器和许多在线JavaScript混淆器。您可以使用任何一个。但这并不能保证代码的机密性。任何精通JavaScript的人都可以对其进行反混淆。
以下是两种方法: 1.通过Web服务提供您的功能。因此,重要的代码驻留在服务器上,扩展将与服务器通信,并处理来自服务器的输出。 2.使用NPAPI,但这不是一种好的方法。
根据我的经验,一个好的策略是尝试向用户提供优秀的扩展程序。如果市场上已经有令人惊叹的东西,没有人会尝试复制您的插件。努力超越竞争对手。
编辑:NPAPI已被弃用。

自从Chrome更新了他们的安全性,使用manifest v2后,eval函数就不能再使用了。我认为这是因为混淆器的工作方式都需要使用eval,所以你不能再使用这种方法来保护代码了。 - Jon Doe
@ChristianJuth 混淆器并不总是使用 eval,即使在 v2 中,如果需要的话也可以启用 unsafe-eval - Xan
@Xan 我不好意思。我稍微改变了我的答案措辞。只是出于好奇,你能否发一下一个不使用 eval 的混淆器的链接?我很想知道它们是如何工作的。 - Jon Doe
@ChristianJuth 我认为问题在于术语。例如,缩小器是混淆器。除了你在答案中描述的方法之外,还有很多使代码在预处理步骤中变得不可读的技术(如提到的Closure编译器)。 - Xan
@Xan 我会小心比较代码压缩器和混淆器,因为它们是不同的。尽管它们都可以使您的代码难以阅读,但代码压缩器是针对速度进行优化的,而混淆器旨在保护您的代码。压缩后的代码可以很容易地重新格式化。虽然需要一些工作来反向工程代码(主要是因为所有变量名),但这并不像解密混淆代码那么困难。 - Jon Doe

4

如你所见这里,你不能。你可以让你的代码难以阅读和理解,但仅此而已。

(那个问题是关于在html页面中隐藏javascript代码,但这大部分相同(据我所知,chrome扩展只是用js/css/html编写的,请纠正我如果我错了))


1
或者可以使用NPAPI/NaCL/PEPPER编写 :) (C++) - Mohamed Mansour

1
使用清单v2后,混淆器更难使用,因为由于安全原因,eval被认为是不安全的。
新的清单v2方案中最大的变化之一可能是扩展程序不再能够使用动态脚本评估技术(如eval()或new Function()),也不能将JS代码字符串传递给会导致使用eval()的函数,例如setTimeout()。此外,某些常用的JavaScript库(如Google Maps和某些模板库)已知使用了一些这些技术。
来源 https://developer.chrome.com/extensions/tut_migration_to_manifest_v2#using

我建议仅仅压缩代码。压缩器的工作方式(鉴于它们并非完全相同)是删除所有空格,并将您的变量名称更改为单个字母以减少字符。这会丢失许多代码含义,使其非常难以阅读。虽然不是绝对可靠,但它会让阅读您的代码变得非常繁琐。除此之外,压缩器旨在用于压缩和加速代码运行。我最喜欢的压缩器是UglifyJS


0
  1. 将重要的代码逻辑留在您的服务器上(Web服务有助于此)
  2. 将敏感的HTML和JS注入到iframe中(可以动态创建此HTML)

但我想这一切归结于您代码的架构。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接