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