【问题标题】:Securing Google App Engine Endpoints保护 Google App Engine 端点
【发布时间】: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


    【解决方案1】:

    你的担心是对的。看看斯诺登的启示。以下是有根据的猜测,您可以尝试确认或忽略。如果答案很重要,您可能需要道德黑客的意见。

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

    恶意软件的传播范围似乎比大多数人想象的要广泛。受感染的设备可能会将您的所有应用程序流量泄漏到远程计算机进行分析,而攻击者的成本几乎为零。 Android 应用程序发布相对容易,这使得该生态系统比 iOS 更容易受到攻击。其他所有已安装的应用程序都可能是您的敌人,尤其是在用户启用 root 时。

    最近发现的证书颁发机构受损、DNS 缓存损坏、冒名顶替热点和中间计算机攻击表明,有动机的攻击者可以记录您的特定 HTTPS 流量,甚至无需访问客户端或服务器计算机。但是,攻击者需要为每个受害者支付少量成本,因此只有在您的代码和数据被认为具有足够价值的情况下,您才会面临风险。

    客户身份被盗或伪造是可能的。基本上,第 1 项)归结为安全性,因为模糊性是最小的安全性,其破解成本可能很低。

    2) 后端软件与您的 Google 帐户、自己的计算机和网络连接一样安全。因此非常安全;-)

    3) 有两种方法可以访问您的后端数据:通过您实施的 API 和通过管理控制台使用您的 Google 帐户。如果托管服务商偷偷给别人开了后门,他们自然不会承认。我相信有当局有能力做到这一点。如果我真的对我的应用程序及其数据感到偏执,我会不信任每个平台。

    总而言之,所有安全屏障都必须有条件地打开,并且没有绝对的安全性。在您的应用程序中使用明确的安全代码,您可以希望将攻击速度减慢到攻击者的成本收益比使得在别处寻找更容易的肉更具吸引力的程度。

    【讨论】:

      猜你喜欢
      • 2017-04-23
      • 1970-01-01
      • 2020-02-23
      • 1970-01-01
      • 2016-02-15
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 2012-11-27
      相关资源
      最近更新 更多