微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何防止其他iOS / Android应用程序使用我的RESTful API?

我有一个预先存在的iOS& Android应用程序,我正在进行更新,包括RESTful服务API和用于身份验证的Facebook登录.该应用程序的一般流程是:

>用户通过Facebook的SDK“登录”到我的应用程序,该SDK将访问令牌返回到我的应用程序.
> App调用RESTful服务,包括Facebook访问令牌作为参数(使用HTTPS和SSL)
>被呼叫的服务将收到的访问令牌(以及仅存储在我的服务器上的应用程序秘密)发送到Facebook以验证用户是谁,并根据该操作执行操作. Facebook设置为从服务器端调用需要app secret.

我的应用已经普及并且已经有几个克隆,我想阻止这些克隆能够使用我的RESTful API(因为我确信他们会在我发布更新时尝试做).让我们假设克隆是聪明的,使用与我的应用程序相同的Facebook访问令牌(如果可能的话),并遵循类似的模式&调用我的应用程序执行的API的频率.

无论如何,确保或几乎确保我的服务的呼叫只来自我的应用程序,而不是克隆?

提前致谢!

解决方法

您可以通过在请求中包含签名并进行验证来完成此操作.

应用方:

>做类似的事情:signature = md5(md5(url data)MY_RANDOM_KEY)
>将签名附加到数据或网址等.
>发送呼叫到REST api(像往常一样)

服务器端:

>从body / url中提取签名(并从中删除).
>计算你认为它应该是什么:signature_should_be = md5(md5(url data)MY_RANDOM_KEY)[请记住你已经从url / data中删除了签名,这样你就可以获得原始预哈希状态的url / data]
>验证签名和signature_should_be是否相等

这样做以及SSL应该使您的API足够安全.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐