如何保护基于电话号码注册的应用程序?

时间:2015-02-14 12:35:48

标签: security authentication registration mobile-application

我想构建一个需要填写用户号码的移动应用程序。之后,将电话号码发送到服务器,服务器会生成与此电话号码对应的随机验证码。然后,该验证码通过SMS发送给用户。接下来,用户将验证码发送回服务器以确保他/她已输入他/她的真实电话号码而不是任何其他人。

我想知道如果你只有一个电话号码而没有别的东西,你如何真正对服务器进行身份验证?我的意思是,在典型的场景中,您拥有在服务器上检查的用户名和密码,如果两者都正确,您可以访问服务器。但是在电话号码注册的情况下,您只有一个电话号码,如果您仅使用它进行身份验证,则意味着任何知道您的电话号码或只是选择它的人都可以假装是您。

如果您发送某种独特的设备ID,则意味着您将无法再使用现有帐户,例如,如果您碰巧更换了新设备。

那么,你如何解决这个问题呢?

2 个答案:

答案 0 :(得分:1)

模式始终是:客户提供他们拥有的证据,作为回报,他们会收到识别令牌。在典型的用户名/密码方案中,这意味着用户证明他们有秘密(用户名+密码),作为回报,他们通常会收到会话cookie。在您的情况下,用户证明他们拥有特定的电话,作为回报,您给他们一个会话令牌或其他识别令牌。客户端保留此令牌并使用它来向服务器标识自己。

您依靠电话系统的原则来确保这是一个独特的识别特征。您的安全性基于这样的假设,即任何时候只有一个人可以接收特定电话号码的消息,并且您需要在登录时实际拥有电话以完成证明。当然,每次用户登录时都需要 。你让他们通过短信循环注册一次,之后你只需要询问他们的号码并让他们通过。

如果用户希望登录,他们必须使用SMS循环证明他们实际拥有相关电话,然后他们将收到令牌。期。这就是它的方式。没有其它的方法。客户端(app)必须保留令牌,只要它希望保持登录状态。显然,您可能希望这种情况持续很长一段时间,并且不要求用户始终进行SMS确认。

这显然将我们带到了令牌盗窃的主题,这可能是一个真正的问题。令牌必须保密,因为它基本上允许无证明身份验证。您可能想要考虑使用某个特定于该设备的唯一标识符来签署该令牌,或者在将其存储在设备上时对其进行加密或采取其他措施,以确保它在存储在设备上时无法从设备中删除。

答案 1 :(得分:0)

正如deceze所指出的,确保comm安全的最佳方法是使用使用设备ID签名的临时令牌。如果用户注销,更改设备或重新安装应用程序,则他们必须再次通过SMS验证过程以确保SIM卡仍在其中。请记住,SIM卡和设备有不同的udids。为简化此操作,您可以在应用上使用RingCaptcha SDK生成令牌,验证用户是否拥有SIM卡并暂时存储该令牌或ID。使用电话号码作为标识符(类似于用户名)和临时PIN码作为密码。该对加上令牌将为您提供设备和SIM卡连接的足够安全性。