问题描述
我正在注册,其中用户输入电子邮件作为他们的用户名,我必须在成功注册后向他们的电子邮件发送随机代码。
到目前为止,我得到的是:
-
第 1 步:用户使用他们的电子邮件注册。
-
第 2 步:API 生成随机代码并将其插入我的数据库表
(tbl_temp_otp)
。
-
第 3 步:插入数据库后,代码将发送到注册时提供的电子邮件中。
-
步骤 4: 用户获取代码,并将其输入到注册表单中,然后 API 检查该代码是否存在并且仍在
unused
状态。
到目前为止,它有效。
我的问题是,如何通过 POST 请求发送 OTP 代码而没有人在 google chrome 的 network
选项卡中看到它?
根据评论进行编辑
我想我以错误的方式解释了这个问题......
我真正的意思不是without anybody seeing it
而是without the registrant seeing it
。
由于注册人能够看到插入到数据库中的代码,我担心他们会使用不存在的电子邮件地址进行注册,并通过查看 network
选项卡并输入插入了 OTP 代码,并且仍然能够使用提供的不存在的电子邮件地址完全注册。
解决方法
无法隐藏通过 POST 请求发送的 OTP。最好的办法是让 OTP 基于时间,并限制它的有效期。 无论如何,在网络选项卡中可见的请求仅对相应用户可见,因此没有实际的安全风险。希望这能澄清你的问题。您可以继续相同的过程。
,你不能。
您通过电子邮件将其发送到电子邮件客户端需要阅读的地方,然后需要将其传输到用户的浏览器,以便浏览器可以通过网络将其发回。
用户的浏览器和电子邮件客户端属于用户。它们在用户的控制之下。它们不能用于向用户隐藏信息。
但这应该没有关系。这是一个一次性代码,旨在证明用户就是他们声称的身份。用户是否掌握它并不重要。
浏览器和您的服务器之间可能会拦截它的风险,但您可以通过使用 HTTPS 来减轻这种风险。
存在电子邮件客户端和浏览器之间可能会拦截它的风险,但对于用户在其系统上安装旨在共享您的一次性密码的恶意软件的可能性,您无能为力。不过,这首先是一种非常遥远的可能性。
电子邮件有被拦截的风险,但您对此无能为力,除非您想强迫用户投资设置并学习如何使用 GPG 或类似工具。 (同样,这是一个小风险)。
重新编辑:
我担心他们会使用不存在的电子邮件地址注册并通过查看网络选项卡进行验证
您的一次性代码应与通过电子邮件发送到的电子邮件地址相关联。
在用户点击该电子邮件中的链接之前,它不会显示在网络选项卡中。因此,如果电子邮件地址不真实,他们就无法获取代码。
您已经将代码与数据库中的特定电子邮件地址相关联,因此他们无法改变主意并将该代码用于其他电子邮件地址。