我有一个处理数据库请求的后端。出于安全原因,我的应用程序不直接与数据库通信。
我如何确保只有我的应用与我服务器上的后端通信?我不希望其他人查询我的后端并尝试访问数据。我只想要我建立的应用程序与之交谈。我是否添加了像Oauth或使用证书的东西?
iOS应用程序(或任何一般应用程序)与后端通信的最佳方式是什么?
答案 0 :(得分:1)
您正在询问iOS设备上安装的应用程序如何针对您的服务器进行身份验证。
如何识别您的用户?
如果您可以识别您的用户,程序可以在第一次启动时连接到您的服务器,提供用户名/密码并获取“秘密”令牌。使用此令牌,它可以访问后端。您可以存储或不存储该令牌。
如果您在应用中提供任何类型的密钥,它将与每次安装完全相同,并且可以从应用中轻松获取。
答案 1 :(得分:1)
在Applicasa中,每个应用都有自己的“空间”所以只有你的应用与数据库通信(每个应用都有自己的空间) www.applicasa.com
答案 2 :(得分:0)
您可以使用OAuth等授权机制。或者你可以建立自己的。它可以像拥有秘密令牌/密钥一样简单。你可以保持它简单,或者你可以开始使它更复杂(即生成带有令牌和参数的哈希值,以便不发送令牌本身,但是使用令牌和请求参数计算的哈希等)。 / p>
然而,没有办法保持api令牌的秘密。因为攻击者可以反编译您的应用程序,所以内省代码并找到您的api密钥。您可以检查一些http标头,但伪造请求标头非常简单。因此,您无法保证请求来自iOS设备。
如果Apple提供了一种在安装过程中存储某些东西的方式,这些方法是用您的开发人员证书或类似的东西签名的,那么您可以保留一些您可以信任的iOS设备中的秘密内容。但最终有人会嗅到网络流量来破解您的授权系统。
所以你可以做一些非常复杂的事情,但你无法保证请求总是来自你的设备。