1

我正在为我们制作的后端构建一个 iOS 和 Android 应用程序,并且在我们希望用户向我们验证他们的 gmail 的应用程序中。在iOS 快速入门页面上,我看到开发人员需要包括:

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

然而,据我所知,我认为应用程序二进制文件(适用于 iOS 和 Android)可以被反编译,这样基本上任何人都可以找到我们的client_idclient_secret.

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

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

4

3 回答 3

3

您需要定义您要保护的对象。如果被保护的东西的价值大于攻击的成本。

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

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

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

于 2015-08-06T16:22:51.897 回答
0

我相信它在某种程度上是错误的。

想象一下这个场景。您想将代码放在公共 git 存储库中。然后每个人都可以看到你的秘密。

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

在 Android 上你可以试试SecurePreferences,在 iOS 上你可以试试UICKeyChainStore

于 2015-08-06T14:57:41.427 回答
0

第 1 步开始:启用 Gmail API

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

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

于 2015-08-08T18:09:43.960 回答