我正在为我们制作的后端构建iOS和Android应用程序,并且我们希望用户在应用程序中对我们的gmail进行身份验证。在iOS quickstart page我看到开发人员需要包括:
private let kClientID = "YOUR_CLIENT_ID_HERE"
private let kClientSecret = "YOUR_CLIENT_SECRET_HERE"
据我所知,我认为app二进制文件(适用于iOS和Android)都可以反编译,因此基本上任何人都可以找到我们的client_id
和client_secret
。
看到谷歌这样解释它我认为这是有道理的,但在我分发的二进制文件中加入秘密身份验证代码感觉不对。
有人可以对此有所了解吗?欢迎所有提示!
答案 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的最佳做法,就可以了。