我目前正在评估针对我想到的应用的本机与PhoneGap的利弊,到目前为止,PhoneGap似乎是理想的选择,因为大多数数据处理将在服务器上完成 - 虽然应用程序只是一种从用户那里获得输入的手段。
但我一直在阅读很多关于如何在root /越狱手机上轻松访问所有PhoneGap .html
和.js
文件的内容。我担心的是我的应用程序将使用几个第三方API,特别是 Last.fm 和 Parse 。这两个API都带有API秘密。这不会引起安全问题吗?虽然使用我的Last.fm API密钥可能造成的最大损害将是耗尽API限制,使用Parse,它可能会更严重,特别是如果我打算存储用户登录,密码,电子邮件等。任何人都可以简单抓住我的Parse应用程序ID和JavaScript密钥并开始查询Parse(可能(但可能不是)竞争对手或巨魔(更有可能)可以从我的应用程序ID推高请求/秒,以便我最终得到一个大的,脂肪10,000美元的账单)。
在PhoneGap中开发应用程序时,是否有任何方法可以保护/加密/混淆这些API密钥?如果你去当地,这个问题会消失吗?
答案 0 :(得分:7)
首先,我认为您提到的安全问题与Phonegap无关,本机应用也存在同样的问题。我承认,在本机应用程序中找到这些密钥更难,但它是可行的。
另一方面,Android apk和Apple ipa文件实际上都是zip存档,因此您不需要使用root电话打开并查看内部。您已经可以为所有应用程序(不仅是Phonegap而是本机应用程序)执行此操作,打开存档,查看资源。但在本机应用程序中,您有一个二进制可执行文件而不是html / js文件。这就是为什么要弄清楚里面的数据(键)和app逻辑并不容易。
一种方法是实现一种特殊方案,该方案将在打包(开发)期间加密您的js文件,将其与应用程序一起分发并在运行时解密。完全有可能(我们在项目中成功完成),您的Phonegap应用程序变得像本机应用程序一样难以入侵。请注意,我并不是说不可能,因为您仍然有在代码/资源中的某处隐藏解密密钥的问题。但要注意,编写这样的框架并不容易,并且需要对Phonegap源代码进行一些修改。
我认为隐藏Parse等密钥的最安全的解决方案是使用您自己的服务器,实现服务器到服务器的身份验证,并将令牌传递给您的客户端以进行客户端 - 服务器通信。在所有其他情况下,你必须通过应用程序发送密钥,然而你隐藏它,会有一些人会找到一种方法来取消隐藏它。