【发布时间】:2014-04-16 08:23:01
【问题描述】:
我目前对 Java 和开发 Android 应用程序还很陌生,到目前为止,我依靠 Google 来了解我为我的第一个应用程序所做的大部分工作。我目前正在使用 Eclipse 在我的应用程序上实现 Google App Engine。我能够编写后端 API 并为我的应用程序生成端点。我的应用程序能够进行正确的调用并从我的数据存储中检索信息。但是,我对后端在幕后的实际工作方式有点困惑,并且有点担心我的数据存储的安全性。
我的问题是:
1) 谁可以访问我的端点?到目前为止,我检查了 Google API Explorer 并且看不到我的端点的任何方法。有人可以反编译我的 APK,找到我的应用程序 ID,然后创建一个可以调用我端点方法的应用程序吗?我知道我可以通过使用客户端 ID 等来保护它,但如果有人能够伪造它,他们会获得对我的端点方法的访问权限吗?
2) 我的后端安全吗?有人能够真正阅读我后端的代码吗?我现在的假设是,我在 Eclipse 中编写并部署到 Google 的代码将在服务器上运行,而我的应用程序代码只包含对它的调用。 (这似乎是一个愚蠢的问题,但我已经做了很多研究,仍然找不到答案。
-Edit- 我已经阅读了更多内容,我相信只有拥有应用引擎管理权限的人才能下载和阅读代码。至于我的应用程序的后端,它只是一个扩展的 servlet。只有当他们的客户端 ID 与我设置的匹配时,才能访问这些方法。如果我错了,请纠正我。
3) 根据我为后端编写的内容,是否只能访问我的数据存储?例如,我有一个名为 getUser() 的函数,它从数据存储区获取有关用户的信息。有权访问我的后端的人是否只能使用 getUser() 方法,而无法手动调用 datastore.get(userKey)(如果该人能够以某种方式获取密钥)?
研究:
我已经查看了如何保护我的端点,目前正在使用客户端 ID 验证端点方法。我还以只返回公共信息而不返回私人信息的方式编写了我的方法。我只是担心设法反编译我的应用程序并恢复其中所有信息的人将能够使用我的端点,或者更糟的是改变我的后端。我目前正在重新阅读应用程序引擎后端的文档,但如果您能就此事提供任何意见,我将不胜感激。
感谢您的宝贵时间。
【问题讨论】:
标签: java android eclipse google-app-engine