Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 需要唯一的电子邮件,同时不泄露现有用户的电子邮件_Security_Design Patterns - Fatal编程技术网

Security 需要唯一的电子邮件,同时不泄露现有用户的电子邮件

Security 需要唯一的电子邮件,同时不泄露现有用户的电子邮件,security,design-patterns,Security,Design Patterns,在标准的web注册表单上,用户需要为站点发送唯一的电子邮件 如果该电子邮件已在使用中,则无法使用该电子邮件创建新用户-但这会打开op,以便利用此功能了解哪些电子邮件是网站的成员(至少检查是否有特定电子邮件正在使用) 确保机器人不能批量查询是相当简单的,但有没有办法完全避免它 我能想到的最好的办法是让用户创建过程因未知错误而失败,并在后台向地址发送电子邮件,解释密码重置过程 我是否错过了更好的选择 更新: 我想避免让新用户在99.9%的时间里退出注册过程,因为电子邮件实际上是唯一的。因此,停止注册

在标准的web注册表单上,用户需要为站点发送唯一的电子邮件

如果该电子邮件已在使用中,则无法使用该电子邮件创建新用户-但这会打开op,以便利用此功能了解哪些电子邮件是网站的成员(至少检查是否有特定电子邮件正在使用)

确保机器人不能批量查询是相当简单的,但有没有办法完全避免它

我能想到的最好的办法是让用户创建过程因未知错误而失败,并在后台向地址发送电子邮件,解释密码重置过程

我是否错过了更好的选择

更新:
我想避免让新用户在99.9%的时间里退出注册过程,因为电子邮件实际上是唯一的。因此,停止注册过程以等待用户单击电子邮件中的链接不是一个完美的解决方案,尽管在某些使用情况下可能是可行的。

您可以在网页上打印以下内容:

将向您发送一封电子邮件以验证电子邮件地址。检查邮件并单击包含的(共享机密)链接


也就是说,你可能无论如何都要验证用户的电子邮件,s.t.您可以在对话框的这个位置执行此操作…

许多站点向指定的电子邮件地址发送包含随机生成的验证码的邮件,并且只有在用户确认他们能够阅读该邮件并获得验证码后才接受用户注册。通常,邮件包含一个URL,用户只需单击即可确认

如果您这样做,您只需发送确认电子邮件,告诉用户他们已经注册并解释密码重置过程

任何web开发框架都可能有一个处理确认邮件的包

请注意,您必须考虑这样一种情况:一个用户拥有一个电子邮件地址并使用它注册到您的站点,然后他们在不更改地址的情况下消失并停止使用该地址,而另一个用户现在拥有该地址并希望注册。这里没有简单的答案

添加了:您添加了不需要确认电子邮件的内容,以便立即进行注册。此要求与唯一电子邮件地址相矛盾,因为在确认之前,您不知道用户提供的电子邮件地址是合法的,而且强制用户选择的字符串的唯一性也没有意义,该字符串的格式恰好与电子邮件地址相同(如果您想要一个唯一的用户名,它不需要像电子邮件地址那样格式化)


如果您想保持即时注册,在确认之前,您必须将电子邮件地址视为不受信任的文本字段。这意味着,如果用户尚未确认其电子邮件地址,则要求您的网站发送邮件的每个操作都必须取消。确认过程基本相同,但现在,如果该地址是重复的,那么在ate中,必须向用户提供合并两个帐户的选项(听起来很难),或者告知用户必须关闭两个帐户中的一个,或者更改与其中一个帐户相关的电子邮件地址。

让注册继续正常进行,但在确认电子邮件中,您应该说:

"You allready have an accout bla, click here to cancel this registration, or continue with new registration and delete your current account"

这样,垃圾邮件发送者永远不会知道更好,而且它非常友好。

我真的想避免在99.9%的时间里让用户退出注册过程,因为电子邮件实际上是唯一的。尽管如此,我仍然会像你在后台描述的那样发送验证电子邮件……拥有未经确认的电子邮件是没有意义的,没有-所以我会在后台给他们发一封电子邮件,他们需要在注册用户访问这些东西之前确认。正如我所说的,这只是一个问题,对于绝大多数用户来说,这是一个尽可能平滑的过程,他们不会使用重复的电子邮件,也不会输入无效的电子邮件。