TLDR:
在将API密钥限制为特定的iOS应用时,Google会检查iOS应用的捆绑标识符的有效性吗?
或者是否有人可以模仿捆绑包ID以发动攻击?
如果后者为假,为什么不在iOS应用程序中包含API密钥?
更新1:
我猜猜Google没有检查团队ID?
App ID一个字符串,用于标识单个团队中的一个或多个应用。应用程序ID包含一个捆绑ID搜索字符串,后面是团队ID,由Apple生成的10个字符的字符串,用于唯一标识团队。
我需要一些指示...(双关语)
说我正在构建一个需要使用Google Directions API的iOS应用。
Google建议您在移动应用中使用API时通过服务器代理网络服务,以保护您的API密钥"
在Google控制台的我的项目设置(API管理器 - >凭据等)中,我可以将API密钥限制为仅使用我的捆绑包标识符(com.example.MyApp)的iOS应用。
由于我不需要服务器,如果我在应用中加入密钥,会发生什么情况更糟?
我现在唯一能想到的就是有人窃取API密钥并构建一个伪造我的捆绑ID的应用程序(甚至假冒iOS主机本身)并触发"无限请求"打倒我的服务/让我付出很多钱。
这可能吗?
如果是,即使我将API密钥隐藏在服务器中,他也不能这样做吗?只需直接调用我的服务器而不是API。
那么在这种情况下拥有服务器的收益是什么?
防止这种滥用的唯一解决方案是要求每个用户进行身份验证和速率限制吗?
但是,然后有人创造了无限制的"随机账户?!
我是否使用验证码?
到那时,UX已经变得非常糟糕,特别是因为我的应用程序甚至不需要授权......
是否有解决方案,或者我只选择最简单的解决方案(在应用程序中包含密钥)并希望最好?