当前位置:  开发笔记 > 运维 > 正文

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

如何解决《如何防止其他iOS/Android应用程序使用我的RESTfulAPI?》经验,为你挑选了1个好方法。

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

    用户通过Facebook的SDK"登录"到我的应用程序,该SDK将访问令牌返回到我的应用程序.

    App调用RESTful服务,包括Facebook访问令牌作为参数(使用HTTPS和SSL)

    被呼叫的服务将收到的访问令牌(以及仅存储在我的服务器上的应用程序秘密)发送到Facebook以验证用户是谁,并根据该操作执行操作.Facebook设置为从服务器端调用需要app secret.

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

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

提前致谢!



1> 小智..:

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

应用方:

    做类似的事情: signature = md5( md5(url + data) + MY_RANDOM_KEY)

    附加signature到数据或网址等

    发送呼叫到REST api(像往常一样)

服务器端:

    signature从body/url中提取(并从那里删除).

    计算你认为它应该是什么:signature_should_be = md5( md5(url + data) + MY_RANDOM_KEY)[记住你已经signature从url/data中删除,以便你获得其原始预哈希状态的url/data]

    验证signature并且signature_should_be相等

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


我对使用这种方法的担心是,克隆可以对我的应用程序进行逆向工程,看看我在这里做了什么.如果克隆也使用了signature = md5(md5(url + data)+ MY_RANDOM_KEY),如我的应用程序中所示,那么这将如何使其安全?另外,我认为MD5已经过时了一段时间了.
推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有