我如何只允许从我的iOS应用程序访问我的MySQL数据库? (使用webapp作为数据库的网关)

我的iOS应用程序需要连接到一个MySQL服务器。 为了做到这一点,我想创build一个Web应用程序,作为客户端应用程序和服务器端数据库之间的中间人。

我的担心是有人可以简单地找出我的应用程序使用的URL并传递他们自己的URL参数 – 而且由于Web应用程序不知道是否从我的iOS应用程序发送了合法的数据,而只是从正确input正确制作的URL任何网页浏览器,系统都会受到攻击。

比方说,我有一个PHPfunction,标记为“已validation”(在我给他们发送电子邮件validation码后)的用户。 这是非常标准的东西,但是阻止某人从Web浏览器发出同样的请求呢?

当然,应用程序用来进行数据库查询的用户将拥有有限的权限,因此数据库的其余部分不会有风险。 但是,即使用户从应用程序外部激活其帐户也是灾难性的。

我想到的select是使用https,以便即使用户计算出URL,他们也不会知道密码,并且由于它从头到尾都是encryption的,所以不能嗅探它。 不幸的是,对于一个贫穷的大学生来说,https可能是昂贵的,所以如果存在的话,我想要一个替代品。

如前所述,没有100%的安全可能。 但是有几个解决scheme可以提供很高的安全性。

HTTPS

正如你指出的,这是一个重要的部分,因为它可以防止嗅探。

会议

使用会话,不允许没有有效会话的任何请求(除了第一个,必须authentication应用程序)。

指纹

检查用户代理并设置额外的http头,以获得您的应用程序独特的指纹。 (仍然有人可以嗅,但他需要使用curl或类似的。)

混淆请求

构build您的查询string并应用散列函数。 服务器需要实现反向function。 ?43adbf764Fz而不是?a = 1&b = 2

encryption

这更进一步。 使用共享密钥来计算散列。 在服务器上重复相同的。 这已经是强大的安全。 为了打破,需要逆向工程你的应用程序。

使用唯一的共享密码

你说这是iOS的应用程序。 安装后,iOS会生成唯一的令牌。 让您的应用程序在您的服务器上注册此令牌。 像这样,你有一个强大的每个安装独有的共享秘密,并且将无法破解你的networking应用程序。