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

Php 如何仅允许从iOS应用程序访问MySQL数据库?(使用webapp作为数据库的网关),php,mysql,ios,security,Php,Mysql,Ios,Security,我的iOS应用程序需要连接到mysql服务器。为了实现这一点,我想创建一个webapp,作为客户端应用程序和服务器端数据库之间的中间人 我担心的是,有人可以简单地计算出我的应用程序使用的URL并传递他们自己的URL参数,而且由于webapp不知道是否从我的iOS应用程序发送了合法数据,而有人只是从任何web浏览器输入正确编制的URL,因此系统将容易受到攻击 假设我有一个PHP函数,用于将用户标记为“已验证”(在我向他们发送电子邮件验证代码之后)。这是相当标准的东西,但是是什么阻止某人从web浏览

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

我担心的是,有人可以简单地计算出我的应用程序使用的URL并传递他们自己的URL参数,而且由于webapp不知道是否从我的iOS应用程序发送了合法数据,而有人只是从任何web浏览器输入正确编制的URL,因此系统将容易受到攻击

假设我有一个PHP函数,用于将用户标记为“已验证”(在我向他们发送电子邮件验证代码之后)。这是相当标准的东西,但是是什么阻止某人从web浏览器发出相同的请求呢

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


我想到的选项是使用https,这样即使用户知道URL,他们也不会知道密码,也无法嗅探密码,因为密码从头到尾都是加密的。不幸的是,对于一个贫穷的大学生来说,https可能会很昂贵,所以如果存在的话,我希望有一个替代方案。

如前所述,没有100%的安全性。但是,有几种解决方案组合在一起提供了极大的安全性

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

会议 使用会话,不允许没有有效会话的任何请求(第一个会话除外,该会话必须对应用程序进行身份验证)

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

混淆请求 构建查询字符串并应用哈希函数。服务器需要实现反向功能?43adbf764Fz代替?a=1和b=2

加密 这更进一步。使用共享机密计算哈希。在服务器上重复相同的操作。这已经是很强的安全性了。为了打破这种局面,你需要对你的应用程序进行反向工程

使用唯一的共享秘密
你说这是一个iOS应用程序。安装后,iOS将生成一个唯一的令牌。让你的应用在你的服务器上注册此令牌。就像这样,你有一个强大的共享秘密,每个安装都是独一无二的,没有办法破解你的web应用程序

让我们看看,你有一个应用程序向PHP后端发送HTTP请求,对吗?那么,从技术上来说,保护您的php不受应用程序外部(或被劫持的版本)的攻击是不可能的。SSL将是一个很好的选择,可以防止第三方嗅探来自真实用户的凭据或会话令牌。在此之后,会话id的周期性重新生成将使那个些通过恶意手段抓取/猜测有效会话id的人感到恼火。在淘汰自动注册机器人时,使用技术对抗可能也很有用。SSL可能是个好主意,但不要只依赖于你的接口(应用程序)发送有效数据。在将用户输入抛出到查询中之前,执行适当的验证和转义(最好使用PDO或mysqli驱动程序)。(请参阅我的文章最后两部分中的一个相关主题)显然,一个专门的黑客不应该在内存编辑iOS应用程序或嗅探/编辑http数据包方面遇到太多麻烦,从而使应用程序约束/验证变得毫无用处。(虽然我没有iOS黑客的经验)你太棒了。谢谢你的详尽回答!