android - 保护 RESTful 调用以从移动设备注册用户

标签 android ios api rest security

用户通过移动应用程序(Android 和 iOS)在我的平台上注册。他们完成表单后,我使用用户名和密码以及 API key 对我的服务器进行 RESTful 调用。

https://api.example.com/v1/users/register

我假设 API key 不 protected ,因为它嵌入在应用程序中,因此任何人实际上都可以进行 RESTful 调用并注册任意数量的用户。

如何保护此调用,以便用户只能从移动应用程序注册?其他应用(例如 Facebook、Twitter 等)如何解决这个问题?

最佳答案

How can I protect this call so that users can sign up ONLY from the mobile app? How do other apps (e.g. Facebook, Twitter,...) solve this problem?

无法仅针对手机限制您的 RESTful 调用。任何人都可以模仿该调用来模拟设备操作 header 或其他内容。面对这个问题的唯一方法是在您的应用程序和后端之间进行良好的安全协议(protocol)设计。

正如您提到的,Facebook 和其他大公司从一开始就没有在他们的应用程序中存储任何 API key ,而是允许用户通过网站或移动设备注册,设置特定的用户凭据。这些注册受到来自客户端 (CAPTCHA) 和服务器端(源 IP + 时间)的反机器人技术的大规模注册攻击的保护。一旦创建并验证了这些凭据,它们的端点将返回一个客户端特定 token ,该 token 可有效进行进一步的 REST API 调用,并且只有该用户将被授权在有限的时间内使用该 token 。现在一种典型的方法是使用 Oauth 2.0正如您在许多公共(public) API 规范中看到的那样:Paypal , Twitter , Facebook等。我建议研究其他著名的 REST API 规范,您可以从中学到很多东西。

几乎所有前面提到的已知技术,如验证码、服务器端检查等,都可能被黑客攻破。但是,如果您仍想添加一些额外的障碍以避免无限的用户帐户,一个好主意是添加两步验证过程来验证帐户。除非此过程正确完成,否则用户将无法使用您的后端 API(授权帐户的 API 除外)。因此,用户可以使用不同的电话号码创建几个帐户,但绝不能无限创建。

关于android - 保护 RESTful 调用以从移动设备注册用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35395540/

相关文章:

iphone - 您可以使用 list 或网络存储在 iOS 网络应用程序中缓存声音文件吗?

api - 设计一个接受大量数据作为输入的 REST API 端点

Swift代码如何在后台调用api并在tableview中加载数据

ios - 仅当条件匹配时才增加 for 循环的计数

android - 如何在服务器上以base64上传图片

安卓NDK。如何播放视频。

android - 工具栏在导航 View 中为自定义主题创建问题?

ios - 动态改变 objective-c 中单元格的高度

php - 在 php 中使用 file_get_content 时如何保留缩进?

android - react native : Webview getUserMedia not working (onPermissionRequest override? )