【问题标题】:Restrict GAE API (Endpoints) to Android app将 GAE API(端点)限制为 Android 应用
【发布时间】:2016-06-28 21:22:49
【问题描述】:

我想限制对我的 GAE 后端的访问仅限于我的 Android 应用。我不希望身份验证是基于用户的,我当然也不希望用户提供他们的 Google 帐户凭据或任何凭据。我只想让我的应用程序可以访问我的 GAE API。

StackOverflow里面有severalquestions这个,但是没看懂是什么流程。

GAE Documentation 预期描述的是服务器端,并且不为 Android 客户端提供任何 sn-p。

我偶然发现了这个 Android 开发人员 blog post 和这个 Google Cloud Platform sample project,为了进行身份验证(使用用户的电子邮件地址),这两者都有很多事情要做,这似乎有点矫枉过正。当我在 Google Developers Console 中为 Android 生成客户端 ID 时,我从应用程序的密钥库中指定了包和 SHA1 校验和。我的印象是他们会以一种更透明的方式向服务器识别应用程序。

上面的链接是要走的路吗,还是我走错了路?

【问题讨论】:

  • 这些链接中的代码使用来自 Google Play 服务的用户帐户。所以这种身份验证方式肯定是基于用户的。仅使用一些应用程序 ID 的问题在于,攻击者很容易破解、反向编译应用程序或监听应用程序的流量。我不相信有任何不基于用户的真正安全的方法来做到这一点(除非谷歌在框架中加入了一些东西),你只能让它变得越来越复杂,这也意味着你需要做很多工作.

标签: android google-app-engine google-cloud-endpoints


【解决方案1】:

到目前为止,您确实不能“将 GAE API(端点)限制为 Android 应用程序”。原因是黑客可能会反编译您的 Android 应用程序并查看任何类型的客户端密钥或其他凭据,然后可以完全访问您的云端点 API 方法。

这可能吗?我不知道。您必须对此进行自己的研究。这将取决于许多因素,例如您的应用程序的知名度、黑客的决心等。例如,Snapchat 使用 GAE,它存在许多安全问题,黑客能够访问他们的 API 来制作 3rd 方应用程序。我想它涉及某种对 Android 或 iOS 客户端的反编译。

看看我刚才问的一个类似的问题(和 cmets)。所有 Cloud Endpoints 都是一种创建 Restful API 的方法。唯一标识您的特定的 Android 应用程序是真正的问题: How to uniquely identify your Android app for rest API

【讨论】:

  • 这是否意味着(如果有人反编译并查看应用程序如何进行身份验证)在他们自己的应用程序中重新使用相同的方式并使用我的 API(再次使用 Google auth)?客户 ID 在哪里发挥作用?
  • 好问题。根据我的经验和测试(其他人可以随意加入),clientIds 仅与 Google+ 身份验证结合使用。不知何故,在使用 Google+ 登录时,API 会将 API 限制为您的客户端。我无法确定它是如何工作的,因为这两个系统看起来确实彼此独立。尽管它们可能以某种方式联系在一起(不确定如何)。有关此检查的更多信息:stackoverflow.com/questions/32126999/…
  • 感谢您的回复。过几天让我细细琢磨一下,除非我发现有什么不同,否则我会把它标记为答案。
  • @MarkosFragkakis 如果您发现不同的东西,请发表评论并告诉我!!!这对我来说也是一个需要大量研究的问题。
猜你喜欢
  • 2016-05-06
  • 2013-07-26
  • 2016-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多