使用PhoneGap创建移动应用程序时的安全注意事项

时间:2012-05-05 21:30:18

标签: security cordova

我是使用phonegap创建移动应用的初学者。在创建带有phonegap的移动应用程序时,我对安全方面有些怀疑。

  1. 我想创建一个访问Web服务的应用程序,例如使用Jersey创建的REST服务。现在,我是否认为黑客可以轻松查看所使用的安全密钥/身份验证机制,使用服务器(使用REST API)验证客户端(在移动应用上)?

  2. 一般情况下,黑客能否轻松访问移动应用程序发送的所有数据(使用phonegap创建)?

  3. 黑客可以反汇编手机版应用以获取原始代码吗?他不会得到本机代码(例如ios中的Objective C)?或者他可以反编译成原始的phonegap代码(即html + js)?如何防止我的代码被反编译?这种情况是否与大多数其他语言相同,即拥有强大PC的黑客可以入侵任何程序/软件?有没有办法防止这种情况发生?

2 个答案:

答案 0 :(得分:20)

好吧,先深吸一口气。你可能不会喜欢我的一些答案,但你会遇到与我们一样的问题。

  1. 在这种情况下,最好的办法是使用类似KeyChain插件的内容从本机端检索安全密钥。

  2. 您可以将PhoneGap排除在外,因为它适用于您在客户端和服务器之间发送未加密数据的任何情况。任何人都可以轻松地使用包括Wireshark或Ethereal在内的多种工具进行收听。如果您需要与服务器通信,则应通过加密,HTTPS或SSL连接进行。

  3. 首先,我认为您错误地认为PhoneGap将您的HTML / JS代码编译成Obj-C。它不是。如果用户解压缩您的应用程序,他们将能够阅读您的HTML / JS。此外,他们还能够反编译你的Obj-C代码。这不需要强大的PC甚至是经验丰富的黑客。几乎任何人都可以做到。

  4. 我给你的建议是不要担心。花时间创建一个真正伟大的应用程序。支付费用的人将支付费用。无论如何,反编译它的人都不会购买应用程序。您尝试与黑客作斗争的时间越长,您可以使用的时间越长。此外,大多数反黑客措施只会让您的实际用户的生活更加艰难,所以实际上他们会适得其反。

答案 1 :(得分:0)

TLDR - 考虑到您正在编写一个网站,并且所有代码( html 和 js )都将对用户可见 Crtl+Shift+i as in browsers
确保最大安全性的一些要点

  1. 如果您使用后端,请重新检查来自应用的所有内容
  2. All attacks possible on websites (XSS, redicting to malacious webistes , cloning webistes, etc are possible )
  3. 发送到应用程序的所有数据最终将在某些 js 变量/资源文件中可用,由于黑客可以访问所有变量,因此即使您使用最安全的数据传输机制,发送到应用程序的所有数据也是如此
  4. 正如 Simon 在他的回答中正确地说的那样,phonegap 或cordova 不会转换 html/js 到本机代码。 Html / Js 可用原样
    Cordova 在官方声明中也明确提到了这一点
<块引用>

不要假设您的源代码是安全的
由于 Cordova 应用程序是由打包在本机容器中的 HTML 和 JavaScript 资产构建的,因此您不应认为您的代码是安全的。可以对 Cordova 应用程序进行逆向工程。

5.主要是网站用来防止其代码被克隆/易于理解的所有技术甚至在这里也适用(主要包括将js代码转换为难以阅读的格式-混淆代码)
6.将本机应用程序与cordova/phonegap应用程序本机应用程序进行比较,我会说cordova更容易被黑客攻击只是因为cordova开发人员之间缺乏意识,他们没有采取足够的措施来保护它并且缺乏现成的(一键)机制直接混淆代码 vs android proguard


Cordova App Hacking 示例(注意:Phonegap 也以类似方式工作)

我将展示一个例子来说明黑客入侵cordova应用程序是多么容易(开发人员没有努力混淆代码)
基本上我们从解压 apk 文件开始(apk 可以像 zip 文件一样解压)
里面的内容和这个差不多 enter image description here cordova 应用程序的源代码位于 /assets/www/ 文件夹中 enter image description here


如您所见,所有内容,包括您与应用程序一起打包的任何数据库都是可见的(请参阅最后 2 行有一个 db 文件)
除此之外,任何其他资源也是直接可见的(文本文件/js/html/音频/视频/等) 所有的视图/控制器也是可见的和可编辑的 进一步探索我们找到 PaymentController.js 文件的内容 enter image description here

打开可以直接看到js代码和其他注释
enter image description here
这里要注意的是,在用户付款后,如果成功则调用successCallback,否则调用cancelCallback。

Hacker 可以简单的替换这两个函数,这样当支付不成功时,successCallback 就会被调用。
在没有其他检查的情况下,黑客已成功绕过付款。