13

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

  1. 我想创建一个访问 Web 服务的应用程序,例如使用 Jersey 创建的 REST 服务。现在,我认为黑客可以很容易地看到使用的安全密钥/身份验证机制,通过服务器(将使用 REST API)对客户端(在移动应用程序上)进行身份验证,我是否正确?

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

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

4

2 回答 2

21

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

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

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

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

我给你的建议是不要担心。花时间创建一个真正出色的应用程序。为它买单的人会为它买单。反编译它的人无论如何都不会购买该应用程序。您尝试与黑客作战所花费的时间越多,您可以用来使您的应用程序变得更好的时间就越少。此外,大多数反黑客措施只会让实际用户的生活更加艰难,因此实际上它们会适得其反。

于 2012-05-07T15:03:50.210 回答
0

TLDR - 考虑到您正在编写一个网站,并且所有代码(html 和 js)对于使用 Crtl+Shift+i 的用户来说都是可见的,就像在浏览器
中一样 确保最大安全性的一些要点

  1. 如果您使用后端,请重新检查来自应用程序的所有内容
  2. 网站上所有可能的攻击(XSS、重定向到恶意网站、克隆网站等都是可能的)
  3. 发送到应用程序的所有数据最终将在一些 js 变量/资源文件中可用,因为所有变量都可以被黑客访问,所以即使您使用最安全的数据传输机制,所有发送到应用程序的数据也是如此
  4. 正如西蒙在他的回答中正确所说,phonegap 或 cordova 不会html/js 转换为本地代码。Html / Js 按原样可用Cordova
    在其官方声明中也明确提到了这一点

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

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


示例 Cordova 应用程序黑客(注意:Phonegap 也以类似的方式工作)

我将展示一个示例来展示黑客破解cordova应用程序是多么容易(开发人员没有努力混淆代码)
基本上我们从解压缩apk文件开始(apk可以像zip文件一样解压缩)
内容内部将与此类似 在此处输入图像描述 Cordova 应用程序的源代码存在于 /assets/www/ 文件夹中 您可以看到所有内容,包括与应用程序一起打包的任何数据库都是可见的(请参见最后 2 行有一个 db 文件) 除了它,任何其他资源也直接可见(文本文件/js/html/音频/视频/等)所有视图/控制器也是可见和可编辑的进一步探索内容我们找到一个 PaymentController.js 文件 打开它我们可以直接查看js代码和其他注释在此处输入图像描述



在此处输入图像描述


在此处输入图像描述
这里我们注意到,在用户执行支付后,如果成功则调用successCallback,否则调用cancelCallback。

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

于 2021-04-15T05:51:20.233 回答