保护Google应用引擎端点

4

我目前对Java和开发Android应用程序还比较新,我依赖谷歌学习我迄今为止完成的第一个应用程序的大部分内容。我正在使用Eclipse在我的应用程序中实现Google App Engine。我能够很好地编写后端API并生成我的应用程序的端点。我的应用程序能够正确调用并从我的数据存储库中检索信息。然而,我对后端实际上是如何工作有些困惑,并且对我的数据存储安全有些担忧。

我的问题是:

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

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

-编辑- 我已经阅读了更多的内容,我相信只有当他们拥有应用程序引擎管理权限时,某人才能够下载并阅读代码。至于我的应用程序后端,它只是一个扩展的servlet。只有当他们的客户端ID与我设置的匹配时,某人才能访问这些方法。如果我错了,请纠正我。

3)对我的数据存储库的唯一访问是否基于我为后端编写的内容?例如,我有一个名为getUser()的函数,从数据存储库中获取有关用户的信息。如果某个人以某种方式获得了这个密钥,那么只有访问我的后端的人才能使用getUser()方法,而不能手动调用datastore.get(userKey)吗?

研究:

我已经查找了保护我的端点,并正在努力使用客户端ID验证端点方法。我还以这样的方式编写了我的方法,以仅返回公共信息而不包含任何私人信息。我只是担心,有人成功反编译我的应用程序并恢复所有信息后,将能够使用我的端点,或者更糟的是修改我的后端。我目前正在重新阅读应用程序引擎后端的文档,但对此事的任何意见表示感谢。

谢谢您的时间。

1个回答

2
你的担忧是正确的。可以参考斯诺登的泄密事件。以下是一些有教养的猜测,你可以尝试确认或驳斥。如果答案很重要,你可能需要来自道德黑客的帮助。
1) 攻击者有多种机会来破坏你的客户端应用程序的安全性。我认为APK文件格式没有混淆你的终端点的URL。APK文件可能以行业标准的方式进行压缩,任何人都可以扩展它。转储APK的可执行二进制内容将显示其文字字符串、终端名称等等。反编译将进一步揭示你的算法,所有方法的依赖关系图和有关其参数的元数据。调试器可以单步运行并监视你的应用程序作为字节码,而不需要原始源代码。
恶意软件似乎比大多数人想象的更为普遍。被攻击的设备可能会泄露所有你的应用程序流量到远程计算机,供攻击者分析,成本几乎为零。Android应用程序可以相对容易地发布,这使得该生态系统比iOS更容易受到攻击。每个已安装的应用程序都可能是你的敌人,特别是如果用户启用了root权限。
最近发现的受损证书颁发机构、DNS缓存损坏、冒充热点和中间人攻击显示,一个有动力的攻击者可以记录你特定的HTTPS流量,甚至不需要访问客户端或服务器计算机。但是,攻击者需要为每个受害者付出一些成本,因此只有当你的代码和数据被认为具有足够的价值时,你才处于风险之中。
客户身份盗窃或伪造可能是可能的。基本上,第1点归结为通过模糊性来实现最小安全性,其破解成本可能很低。
2) 后端软件的安全性与你的Google帐户、自己的计算机和网络连接一样安全。因此相当安全 ;-)
3) 访问后端数据的两种方式:通过你实现的API和通过你的Google帐户的管理控制台。如果主机提供商秘密地给其他人留下了后门,他们自然不会承认。我相信有权力使这种情况发生的机构。如果我真的对我的应用程序及其数据非常担心,我会不信任任何平台。
总之,所有安全屏障都必须有条件地打开,没有绝对的安全性。通过在你的应用程序中使用显式安全代码,你可以希望将攻击减缓到攻击者的成本效益比使其更有吸引力的易受攻击的目标。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接