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

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

我担心的是,有人可以简单地弄清楚我的应用使用的URL并传递他们自己的网址参数 – 因为网络应用程序不知道是否从我的iOS应用程序发送了合法数据,而只是输入正确制作的URL任何网络浏览器,系统都会受到攻击.

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

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

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

解决方法:

如前所述,没有100%的安全性.但是有几种解决方案可以提供很好的安全性.

HTTPS

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

会议

使用会话,不允许任何没有有效会话的请求(第一个,必须验证应用程序).

指纹

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

混淆请求

构建查询字符串并应用哈希函数.服务器需要实现反向功能. ?43adbf764Fz而不是?a = 1& b = 2

加密

这更进了一步.使用共享密钥计算哈希值.在服务器上重复相同的操作.这已经是强大的安全性.为了打破,需要对您的应用进行逆向工程.

使用唯一的共享密钥

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

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...