7

平台安全的最后一节中,它提到了一种保护 PhoneGap 应用程序源代码的方法。

逆向工程是许多使用 PhoneGap 的人关心的问题,因为人们可以简单地打开应用程序二进制文件并查看应用程序的 JavaScript 源代码。甚至可以添加恶意 JavaScript 代码,重新打包应用程序并将其重新提交到应用程序商店/市场,以尝试应用网络钓鱼。这种做法可以在任何应用程序上进行,无论它是用 PhoneGap 还是其他方式编写的,因为反编译 Java 或 Objective-C 是一项类似的简单任务。

PhoneGap 实际上可以解决这个安全问题,因为应用程序开发人员可以在运行时在他们的应用程序中下载 JavaScript,运行该 JavaScript,并在应用程序关闭时将其删除。这样,当设备处于静止状态时,源代码永远不会在设备上。对于 Java 或 Objective-C 来说,这是一个更加困难的前景,更不用说 App Store 中围绕动态运行 Objective-C 代码的限制了。

但是,我想知道如何防止其他人在服务器上下载我的源代码?

4

3 回答 3

2

我建议对您的代码进行注释,然后通过 Google 的Closure Compiler运行它,这会混淆它并执行某些优化。这将使人们很难阅读您的代码,但除此之外,您将不得不接受 JS 是一种客户端语言的事实。

于 2013-07-28T21:02:05.937 回答
1

下面的模式怎么样:

  1. 在您的应用程序中嵌入一个引导 JavaScript,它可以针对您的服务器启用用户/设备身份验证。尽你所能混淆引导代码。
  2. 将应用程序的主要逻辑保留为服务器上的 JavaScripton(经过身份验证的用户可以访问)
  3. 身份验证后,在运行时下载主逻辑 JavaScript,运行该 JavaScript,并在应用程序关闭时将其删除

持续升级无痛。

于 2014-10-20T05:00:59.337 回答
1

我会建议:

  • 混淆大部分/所有 JS 代码。Google 的Closure Compiler 是不错的选择。

应用程序启动时:

  • 在设备上存储一些哈希码,在调用服务器以获取动态数据之前需要对其进行验证
  • 在App启动过程中,首先将App hashcode推送到服务器以验证App的真实性,服务器会检查该hashcode以验证App的合法性
  • 一旦服务器验证了应用程序的合法性,服务器就可以发送另一个哈希码或继续使用相同的哈希码。此外,服务器也可以设置自定义 cookie 参数……这完全取决于 App 和服务器通信的架构。所以设置最适合您需求的东西
  • 一旦验证了应用程序的合法性,那么从设备到服务器的所有调用都应包含相同的哈希码或 cookie,服务器将在响应调用之前先对其进行验证。

与其发送新的 js 代码,不如推送 json 动态数据并在设备上保持 js 代码混淆。

于 2014-10-20T05:53:51.710 回答