确保 http(s) 请求来自我的 iOS 应用程序


Make sure an http(s) request is coming from my iOS app

我正在开发一个iOS应用程序,其中向用户显示与其周围环境相关的内容。我有一个用户名/密码认证。因此,用户将他的GPS数据以及他的登录信息发送到我的PHP/MySQL后端,然后返回数据。

但是,我担心有人可能会反编译我的应用程序,注册然后"扫描"我的整个数据库,只需发送具有不同GPS数据的请求,而这些数据实际上并非来自iOS设备。有什么办法可以防止这种情况吗?我已经用谷歌搜索并发现了这种威胁:

如何确保 API 请求来自我们的移动(ios/android)应用程序?

但我认为那里的问题略有不同,并不能解决我的问题。

我已经研究了 API 密钥,但没有找到一种方法来阻止恶意用户通过注册/反编译来访问 API,然后将他的登录信息与代码中的密钥一起使用。

任何帮助,不胜感激。一月

您可以记录每个用户的所有请求,然后使用 GPS 坐标将规则应用于用户的移动。 例如,设置一个规则,如果坐标表明用户移动速度超过 500 英里/小时,或者在一天内行驶超过 10,000 英里,则触发该规则,诸如此类。 如果规则触发,则运动是人为的,您正在被扫描;如果规则没有触发,则意味着用户正在按预期以普通的人类方式移动。

好吧,我不是移动设备开发人员,但是如果您没有其他选择,则可以生成一个令牌(一些哈希),并且每次调用您的API都需要根据令牌进行验证?

我以前在这样的应用程序上遇到过同样的问题。最后,您不能真正依赖正在检查的基于设备的耦合和访问规则。

首先要考虑的是某种形式的身份验证。但猜测您已经考虑到了这一点,它可能不适用于您的应用程序。

我的方法是检查并限制一天内可能来自某个来源的查询数量。根据刷新间隔计算,您希望从后端提取多少数据,在此基础上放置大约 10%,并在超过该目标后停止向该目标提供数据,并向管理员发送有关事件的电子邮件,以便他可以查看它,并可能永久禁止客户端。

正如之前的评论中所述,也不防水,但它以与设备无关的方式工作,而且您越难滥用它,它就越好。