【发布时间】:2015-12-03 13:48:30
【问题描述】:
场景:我想创建一个应用程序,用户在其中注册帐户,服务器向他们发送一次性密码,以通过 SMS 验证他们的联系方式。用户输入收到的代码以验证他们的详细信息。
但是,发送短信需要花钱,但接收短信是免费的,而且我的短信网关让我可以阅读收到的短信。
所以我可以在我的应用程序中创建一个屏幕,让用户向我的网关发送一条短信,并预先填写网关号码和消息(例如,“嗨,请使用代码激活我的帐户:34GKTT551T”)。用户只需按发送即可。
我的网关不会让用户输入他们收到的代码并验证服务器上的代码,而是选择用户发送的代码并将消息发送到我的服务器,然后服务器会验证代码,从而验证用户的电话号码是他们在注册时输入的号码。
问题:这种方法有什么根本错误吗?
以这种方式做事有什么好处和坏处?是的,我知道 SMS 消息可以被伪造,但它比伪造也可以使用的电子邮件更难。我不会认为这是适当的 2 因素身份验证的替代方法,但这种方法值得作为一种成本较低的替代方法,不需要用户执行任何其他特殊操作。
PS。这是我关于堆栈溢出的第一个问题,所以很好。
【问题讨论】:
标签: php objective-c security