2014-03-12 128 views
4

我目前对Java很陌生并且正在开发Android应用程序,我依靠Google学习了迄今为止为我的第一个应用程序所做的大部分工作。我目前正在使用Eclipse在我的应用上实施Google App Engine。我能够编写后端API并为我的应用程序生成端点。我的应用程序能够进行正确的调用并从我的数据存储中检索信息。然而,我对后台如何在幕后工作感到有点困惑,并且担心我的数据存储的安全性。保护Google App Engine端点

我的问题是:

1)谁可以访问我的终点?到目前为止,我检查了Google API Explorer,并且看不到我的端点的任何方法。有人可以反编译我的APK,找到我的应用程序ID,并创建一个可以调用我的端点方法的应用程序?我知道我可以通过使用客户端ID等来保护它,但如果有人能够伪造这个,他们是否可以访问我的端点方法?

2)我的后端是否安全?有人能够真正阅读我后端的代码吗?我现在的假设是,我在Eclipse中编写并部署到Google的代码将在服务器上运行,并且我的应用程序代码仅包含对它的调用。 (这可能看起来像一个愚蠢的问题,但我已经做了大量的研究,但仍然找不到答案)。

-Edit-我已经做了更多的阅读,并且我相信只有拥有管理员权限的应用引擎管理员才能下载和阅读代码。至于我的应用程序的后端,它只是一个扩展的servlet。如果其客户端ID与我设置的客户端ID匹配,则只能访问这些方法。请纠正我,如果我错了。

3)根据我为后端编写的内容,是否唯一访问我的数据存储?因此,例如,我有一个名为getUser()的函数,它从数据存储区获取有关用户的信息。有权访问我后端的人只能使用方法getUser(),并且不能手动调用datastore.get(userKey)(如果该人以某种方式能够获得密钥)?

研究:

我已经在我的固定终端抬头一看,我目前正在认证具有客户端ID端点的方法。我也写过我的方法,只返回公开信息,没有私人信息。我只是担心有人设法反编译我的应用程序并恢复其上的所有信息将能够使用我的终端,或者更糟的是改变我的后端。我目前正在通过应用程序引擎后端文档进行重新阅读,但希望对此提供任何意见。

谢谢你的时间。

回答

2

你是对的担心。看到斯诺登的启示。以下是您可以尝试确认或解雇的受过教育的猜测。如果答案很重要,您可能需要道德黑客的意见。

1)攻击者有多种机会危及客户端应用程序的安全。我不认为APK文件格式会混淆您的端点的网址。 APK文件可能以任何人都可以扩展的行业标准方式进行压缩。转储APK的可执行二进制内容将显示其文字字符串,端点名称等等。通过揭示你的算法,反编译会更进一步,所有方法的依赖关系图和关于它们参数的元数据。调试器可能会单步执行并将您的应用程序监控为字节码,而无需使用原始源代码。

恶意软件似乎比大多数人认为的更普遍。受到威胁的设备可能会将您的所有应用流量泄漏到远程计算机上,以几乎零成本向攻击者分析。 Android应用程序的相对轻松发布使该生态系统比iOS更易受到攻击。其他已安装的应用程序可能是您的敌人,尤其是在用户启用生根的情况下。

最近发现的受损证书颁发机构,DNS缓存损坏,冒名顶替者热点和计算机在中间攻击中表明,激励攻击者可以在无需访问客户端或服务器计算机的情况下记录特定的HTTPS流量。然而,攻击者需要为每个受害者花费很小的代价,因此如果您的代码和数据被认为具有足够的价值,那么您只会面临风险。

客户端身份盗用或伪造可能是可能的。基本上第1项)归结为安全通过默默无闻,最小的安全性,其破解成本可能很低。

2)后端软件与您的谷歌帐户,自己的电脑和网络连接的安全。因此非常安全;-)

3)有两种方式来访问你的后端数据:您实施和通过管理控制台与您的谷歌帐户通过API。如果一个托管服务提供商偷偷给他人一个后门,他们自然不会承认。我相信有权力做到这一点。如果我真的对我的应用程序和数据非常偏执,我会怀疑每个平台。

总之,所有的安全障碍必须有条件地开放,没有安全是绝对的。在应用程序中使用明确的安全代码时,您可以希望减慢攻击的速度,使攻击者的成本效益比能够让其他地方的肉更容易找到。

+0

感谢您的详细解答!我认为这回答了我对后端安全性的所有问题。因此,尽管黑客可能能够访问和使用我的端点,但他们将无法读取其实际代码。这真的是我所担心的。谢谢! – noraacee