安全性:应用源代码中的谷歌客户端密码安全吗?

时间:2015-08-06 14:50:16

标签: android ios security google-api binaries

我正在为我们制作的后端构建iOS和Android应用程序,并且我们希望用户在应用程序中对我们的gmail进行身份验证。在iOS quickstart page我看到开发人员需要包括:

private let kClientID = "YOUR_CLIENT_ID_HERE"
private let kClientSecret = "YOUR_CLIENT_SECRET_HERE"

据我所知,我认为app二进制文件(适用于iOS和Android)都可以反编译,因此基本上任何人都可以找到我们的client_idclient_secret

看到谷歌这样解释它我认为这是有道理的,但在我分发的二进制文件中加入秘密身份验证代码感觉不对。

有人可以对此有所了解吗?欢迎所有提示!

3 个答案:

答案 0 :(得分:3)

您需要定义您要保护的人。如果受保护的值大于攻击的成本。

没有安全的方法将值放在源代码中,但这对您的应用程序来说可能足够安全。将它们放在加密文件中只是稍微好一些,因为该文件的密钥必须在应用程序中。

离开从服务器获取它们,也许在注册时,安全问题就是对用户进行身份验证。然后将客户端和安全ID放入钥匙串中。

虽然使用密钥时钥匙串在设备上尽可能安全,但必须将其获取到内存中,然后编码到请求中。攻击者的难易程度要高得多,但并非难以克服。

答案 1 :(得分:0)

我认为这有点不对劲。

想象一下这种情况。您希望将代码放在公共git存储库中。然后每个人都能看到你的秘密。

解决此问题的一种方法是将数据存储在加密配置文件或类似文件中。

在Android上,您可以尝试SecurePreferences,在iOS上,您可以尝试使用UICKeyChainStore

答案 2 :(得分:0)

来自Step 1: Enable the Gmail API

  

选择应用程序类型Installed application,安装的应用程序类型Other,然后单击Create Client ID按钮。

Google知道应用程序类型在不安全的环境中运行,因此Google应围绕该假设设计数据访问和完整性。由于示例文档包括源代码中的秘密,只要您遵循Google的最佳做法,就可以了。