我正在创建一个移动应用程序,它将对电话号码进行验证,就像大多数应用程序使用您的手机时所做的那样。
我也在开发后端,但我不知道有什么更安全的方法来生成4-6位数字代码,并通过短信发送来验证该帐户。
我应该如何实现代码的生成?另外,如何验证它是否是该电话的有效代码?
我应该生成一个随机代码并将其存储在数据库中吗?如何确保每个电话的代码是唯一的?当我有超过999999 (6位数)的用户请求代码时,即使它肯定不会发生,是否有必要处理这种情况?
发布于 2021-03-19 15:09:24
代码只需要是随机的,并且只需要与试图登录的一个特定会话相关联。这样,如果您知道under 123‘S MFA令牌,实际上并不重要,除非您还有特定的会话密钥user123请求MFA令牌下面。
代码应该与会话一起存储一个过期日期-时间,而不管该会话是一个“传统的”长寿命会话还是一个“登录会话”,只存在足够长的时间来产生一个auth令牌(比如JWT)。只是不要将它或它的任何派生存储在客户端上,因为这样做会使目的落空。:D
发布于 2021-03-19 15:09:13
你可以自己实现所有这些,但你必须以某种方式发送短信。我假设您希望从后端发送代码SMS以确保安全,因此您需要一个SMS发送提供者。
一些短信发送服务已经提供了电话验证服务,包括跟踪代码和格式化您的短信以一种与不同供应商兼容的方式。包括插入应用程序哈希之类的东西。
例如,https://www.twilio.com/verify (我对此进行了测试,尚未在生产中使用)。
发布于 2021-03-19 16:21:20
我还想提醒你,如果你把代码发送到我的铜线家庭电话,你将不会收到短信回复。(嗯,它现在是基于光学的,但它仍然不支持短信。)
https://softwareengineering.stackexchange.com/questions/423609
复制相似问题