在移动应用程序中确认电子邮件的最佳方法?

信息安全 验证 电子邮件
2021-09-10 02:59:08

不胜感激您对所探索的选项的意见:

a- 启动应用程序并要求发送到用户电子邮件的验证码?

b-通过单击电子邮件中的深层链接+验证码启动应用程序,并向用户确认他们的电子邮件已通过验证

Q1-从信息安全的角度来看,这两种方法的优缺点是什么?

Q2- 还有其他需要考虑的因素吗?

一个更普遍的问题:

Q3- 鉴于移动设备经常用于对用户进行身份验证,是否可以肯定地说移动应用程序仅仅因为在移动设备上就不太容易出现身份验证问题?

1个回答

由于这是关于安全性,我会说无论你如何做,安全性归结为适合用作“验证码”的字符数。

但是,使用不是如上述评论中注册的自定义协议的单个直接激活链接,存在不知情的用户单击此链接并无意中激活用户未注册的帐户的风险。

但是,从可用性的角度来看:每个人都没有将他们的电子邮件帐户绑定到他们的手机,因此必须使用替代方案。

所以我的建议是:

有 2 个备选方案,其中第一个备选方案是如下链接:appcustom://activate/39734962

但是您还提供了一种辅助激活方式,例如:“如果您在安装该应用程序的其他设备上收到您的电子邮件,请按“使用代码”并输入 39734962 作为代码。”


在应用程序中,您必须验证激活码是否与启动激活的手机对应。例如:第一个用户使用电子邮件注册。服务器向应用程序发送一个唯一令牌,该令牌保存在手机内存中。

在服务器上,您存储电子邮件、令牌和激活码。

激活后,用户输入代码或单击自定义协议处理程序链接。然后,您的应用程序将发送到服务器:电子邮件、先前保存的令牌,然后是代码。服务器检查所有 3 个字段是否匹配。

这意味着如果用户注册,然后从手机中删除应用程序,然后重新安装应用程序,用户将无法使用用户收到的激活码进行激活。用户必须请求新的激活码。

一个好主意是从这一点开始注册,因此当用户成功输入激活码或单击链接时,用户将被带到注册表单以填写其余详细信息,以及预填写电子邮件字段的位置并且无法更改(当然您还需要在服务器端检查电子邮件字段是否未更改)。

通过使用这样的方案,您可以避免电子邮件地址因为恶意或不知情的用户而被锁定。

例如:

1:用户填写Email并按提交。

2:电话从服务器接收令牌。手机在内存中保存了电子邮件和令牌。

3:用户点击邮件中的协议链接或在应用程序中手动输入代码。应用程序向服务器发送电子邮件、令牌和代码。服务器验证电子邮件、令牌和激活码是否正确。

4:用户现在被带到注册表,要求他填写其余的详细信息,例如用户名,选择用于帐户的新密码,名字,姓氏等。当然,链接和代码在电子邮件必须在注册实际完成之前保持有效,因此如果用户意外中止该过程(例如移出网络覆盖范围),他们将能够在以后继续。

但是,按时间过期激活码和令牌是个好主意,例如 48 小时是一个好时间。