如何验证被点击的API是否来自实际应用程序,并且没有经历任何MITM攻击。
我理解SSL证书可以用来实现传输级别的安全性,应用程序可以确保它正在服务于正确的服务器,但我怎样才能从应用程序端获得同样的东西。
我只是想确保只有我的应用程序才能使用我的服务而且点击不是来自我不信任的地方。
由于
答案 0 :(得分:1)
再次查看SSL - 它提供了客户端证书,例如,这样做。然而,这只会改变问题,因为攻击者可能会使用相同的机制来获取证书。 (共享API令牌通常也被认为是可以的,并且更容易实现。)
一般来说,你无法保证这一点。您可以通过外部方式发出基于用户身份验证的证书(例如,让用户输入他们的用户名和密码)或者让对手通过使用反向图灵测试来滥用您的API(例如完全自动化的程序来告诉您),从而获得良好的结果计算机和人类分开,又名CAPTCHAs)。
答案 1 :(得分:0)
与客户端根据服务器证书验证服务器的方式相同,SSL支持服务器颁发客户端证书,并要求与该特定证书进行通信。
通过这种方法,它归结为拥有证书而不是密码的知识。在移动设备方面存在问题,因为攻击者可以更轻松地获取对您设备的物理访问权限并阅读应用程序的文档。因此,请务必将钥匙存放在钥匙串中。
此外,您与服务器握手并要求其发出客户端证书的方法成为安全瓶颈。攻击者可以通过物理访问设备来嗅探流量并轻松找出使服务器发出正确证书所需的API调用。
阅读Apple关于iOS here安全性的面向业务的文档。