我是使用phonegap创建移动应用的初学者。在创建带有phonegap的移动应用程序时,我对安全方面有些怀疑。
我想创建一个访问Web服务的应用程序,例如使用Jersey创建的REST服务。现在,我是否认为黑客可以轻松查看所使用的安全密钥/身份验证机制,使用服务器(使用REST API)验证客户端(在移动应用上)?
一般情况下,黑客能否轻松访问移动应用程序发送的所有数据(使用phonegap创建)?
黑客可以反汇编手机版应用以获取原始代码吗?他不会得到本机代码(例如ios中的Objective C)?或者他可以反编译成原始的phonegap代码(即html + js)?如何防止我的代码被反编译?这种情况是否与大多数其他语言相同,即拥有强大PC的黑客可以入侵任何程序/软件?有没有办法防止这种情况发生?
答案 0 :(得分:20)
在这种情况下,最好的办法是使用类似KeyChain插件的内容从本机端检索安全密钥。
您可以将PhoneGap排除在外,因为它适用于您在客户端和服务器之间发送未加密数据的任何情况。任何人都可以轻松地使用包括Wireshark或Ethereal在内的多种工具进行收听。如果您需要与服务器通信,则应通过加密,HTTPS或SSL连接进行。
首先,我认为您错误地认为PhoneGap将您的HTML / JS代码编译成Obj-C。它不是。如果用户解压缩您的应用程序,他们将能够阅读您的HTML / JS。此外,他们还能够反编译你的Obj-C代码。这不需要强大的PC甚至是经验丰富的黑客。几乎任何人都可以做到。
我给你的建议是不要担心。花时间创建一个真正伟大的应用程序。支付费用的人将支付费用。无论如何,反编译它的人都不会购买应用程序。您尝试与黑客作斗争的时间越长,您可以使用的时间越长。此外,大多数反黑客措施只会让您的实际用户的生活更加艰难,所以实际上他们会适得其反。
答案 1 :(得分:0)
TLDR -
考虑到您正在编写一个网站,并且所有代码( html 和 js )都将对用户可见
Crtl+Shift+i as in browsers
确保最大安全性的一些要点
不要假设您的源代码是安全的
由于 Cordova 应用程序是由打包在本机容器中的 HTML 和 JavaScript 资产构建的,因此您不应认为您的代码是安全的。可以对 Cordova 应用程序进行逆向工程。
5.主要是网站用来防止其代码被克隆/易于理解的所有技术甚至在这里也适用(主要包括将js代码转换为难以阅读的格式-混淆代码)
6.将本机应用程序与cordova/phonegap应用程序本机应用程序进行比较,我会说cordova更容易被黑客攻击只是因为cordova开发人员之间缺乏意识,他们没有采取足够的措施来保护它并且缺乏现成的(一键)机制直接混淆代码 vs android proguard
Cordova App Hacking 示例(注意:Phonegap 也以类似方式工作)
我将展示一个例子来说明黑客入侵cordova应用程序是多么容易(开发人员没有努力混淆代码)
基本上我们从解压 apk 文件开始(apk 可以像 zip 文件一样解压)
里面的内容和这个差不多
cordova 应用程序的源代码位于 /assets/www/ 文件夹中
如您所见,所有内容,包括您与应用程序一起打包的任何数据库都是可见的(请参阅最后 2 行有一个 db 文件)
除此之外,任何其他资源也是直接可见的(文本文件/js/html/音频/视频/等)
所有的视图/控制器也是可见的和可编辑的
进一步探索我们找到 PaymentController.js 文件的内容
打开可以直接看到js代码和其他注释
这里要注意的是,在用户付款后,如果成功则调用successCallback,否则调用cancelCallback。
Hacker 可以简单的替换这两个函数,这样当支付不成功时,successCallback 就会被调用。
在没有其他检查的情况下,黑客已成功绕过付款。