保护RESTful呼叫以从移动设备注册用户

时间:2016-02-14 18:35:13

标签: android ios api rest security

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

Header 1,Header 3,Header 4,Header 5,Header 6,Header 7,Header 8,Header 9,Header 10,Header 11,Header 12,Header 13,Header 14,Header 15,Header 16,Header 17,Header 18,Header 20,Header 21,Header 22,Header 23,Header 24,Header 25,Header 26,Header 27,Header 28,Header 29,Header 30,Header 31,Header 32,Header 33
1.0,18.0,20.0,25.0,23.0,10.0,11.0,24.0,14.0,6.0,2.0,13.0,9.0,5.0,16.0,3.0,Next value indicates number of rows to skip,,XA,15.0,46.0,48.0,25.0,49.0,68.0,10.0,40.0,20.0,0.0,0.0,0.0
2.0,23.0,15.0,5.0,4.0,12.0,16.0,20.0,6.0,11.0,19.0,24.0,1.0,9.0,13.0,7.0,Next value indicates number of rows to skip,,XA,184.0,6232.0,81252.0,478188.0,596.3237,1.38895,1000.0,400.0,200.0,0.0,0.0,0.0
3.0,18.0,20.0,25.0,23.0,10.0,11.0,24.0,14.0,6.0,2.0,13.0,9.0,5.0,16.0,3.0,Next value indicates number of rows to skip,,XA,15.0,46.0,48.0,25.0,49.0,68.0,10.0,40.0,20.0,0.0,0.0,0.0

我认为API密钥不受保护,因为它嵌入在应用程序中,因此任何人都可以实际进行RESTful调用并注册尽可能多的用户。

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

2 个答案:

答案 0 :(得分:3)

  

如何保护此通话,以便用户只能通过该通话进行注册   移动应用?其他应用程序(例如Facebook,Twitter,......)如何解决这个问题   问题

无法仅限移动电话限制您的RESTful呼叫。任何人都可以模拟该模拟操纵标头或其他任何设备的调用。解决此问题的唯一方法是在您的应用和后端之间建立良好的安全协议设计。

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

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

答案 1 :(得分:0)

我认为你必须设计像reCAPTCHA这样的流程。它的文档可能会给你一个提示。