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

时间:2013-10-11 21:24:52

标签: php mysql ios security

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

但是,我担心有人可能会反编译我的应用程序,注册然后“扫描”我的整个数据库,只需发送带有不同来自iOS设备的不同gps数据的请求。有什么方法可以防止这种情况吗?我已经用Google搜索并发现了这种威胁:

How to make sure API requests come from our mobile (ios/android) app?

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

我查看了API密钥,但没有找到办法阻止恶意用户通过注册/反编译获取对API的访问权限,然后使用他的登录信息以及代码中的密钥。

感谢任何帮助。 扬

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

首先要考虑的是某种形式的身份验证。但是猜测你已经考虑过了,它可能不适用于你的应用。

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

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