我可以加密一个javascript文件,仍然让它在客户端上运行吗?



我有一个客户,他们有一个充满javascript的文档,他们想加密。我的想法是,我可以为未加密的文档创建一个php上传表单,然后它处理并给客户端返回加密的文档。是否有可能对代码进行盐处理,使其仍然可以工作,但无法撤消?

No

本质上,如果你的代码正在工作,它正在被浏览器解释(并且可以看到…至少部分是这样)。

你最好的办法是混淆你的代码。

顺便说一句,你可以尝试Jake所说的,简单地将所有*.js请求重定向到一个php页面(使用.htaccess),其中:
1. 打开文件,
2. 读入字符串
3.对字符串
进行编码4. 然后返回那个。
尽管这需要客户端拥有用于加密字符串的密钥。一旦有人解密了js(运行它),他们就可以窃取它…

不,这是不可能的:浏览器不能运行加密的废话,它没有解密密钥。你必须给浏览器提供它能理解的有效代码——要么发送未加密的代码,要么发送加密的代码解密密钥代码来进行解密——你不能阻止用户访问浏览器正在运行的代码。

但是,您可以混淆代码,使对某些人来说难以阅读和理解,同时仍然有效和可运行。有一些工具可以做一些事情,比如删除所有注释和将变量重命名为无意义的名称。但是只要有足够的时间和精力,还是有人能弄明白代码的作用的。

这是一个非常疯狂的想法,但是您可以要求最终用户在浏览器中输入加密密钥,用于解密代码。然后可以对解密后的字符串运行eval()以将代码加载到内存中。我不知道是否要求最终用户输入密钥在你的情况下是可行的,但它是-它应该工作。

最新更新