Sql 有人在同一时间在我的网站上创建了两个完全相同的帐户。怎么可能呢?

Sql 有人在同一时间在我的网站上创建了两个完全相同的帐户。怎么可能呢?,sql,database,race-condition,Sql,Database,Race Condition,我简直不敢相信——有人居然用同一封电子邮件在我的社交网站上创建了两个帐户,尽管服务器端和客户端都有验证检查,可以防止这种情况发生。但是,在创建这两个帐户时注意到的时间是完全相同的 出于某种原因,我怀疑使用表单或任何接口是否有可能做到这一点,但我非常好奇这是如何发生的?这里有人有什么想法吗?您应该在用户表的电子邮件或用户名列上设置唯一约束。您应该在用户表的电子邮件或用户名列上设置唯一约束。可能是因为您没有在数据库中处理此唯一约束, 如果您在数据库中的电子邮件列上有一个唯一的约束,那么您就不会有这种

我简直不敢相信——有人居然用同一封电子邮件在我的社交网站上创建了两个帐户,尽管服务器端和客户端都有验证检查,可以防止这种情况发生。但是,在创建这两个帐户时注意到的时间是完全相同的


出于某种原因,我怀疑使用表单或任何接口是否有可能做到这一点,但我非常好奇这是如何发生的?这里有人有什么想法吗?

您应该在用户表的电子邮件或用户名列上设置唯一约束。

您应该在用户表的电子邮件或用户名列上设置唯一约束。

可能是因为您没有在数据库中处理此唯一约束,
如果您在数据库中的电子邮件列上有一个唯一的约束,那么您就不会有这种问题

可能是因为您没有在数据库中处理这个唯一的约束, 如果您在DB中的电子邮件列上有一个唯一的约束,那么您就不会有这种问题

出于某种原因,我怀疑使用表单或任何接口是否有可能做到这一点,但我非常好奇这是如何发生的?有人有什么想法吗

最有可能的是,一个你没有正确跟踪的浏览器双帖子

如果您不希望两个人在您的社交网络中共享一个电子邮件地址,请在电子邮件字段上设置唯一的限制

为了避免双重发布,请在页面上的隐藏控件中生成一个随机字符串,将其保留在列中,并使此列唯一

出于某种原因,我怀疑使用表单或任何接口是否有可能做到这一点,但我非常好奇这是如何发生的?有人有什么想法吗

最有可能的是,一个你没有正确跟踪的浏览器双帖子

如果您不希望两个人在您的社交网络中共享一个电子邮件地址,请在电子邮件字段上设置唯一的限制


要避免双重发布,请在页面上的隐藏控件中生成一个随机字符串,将其保留在列中并使此列唯一。

如果您以某种方式接收双重表单发布,并且您的约束/事务处理未正确完成,则很容易做到这一点


双表单提交,尤其是由javascript触发时,可以非常及时地提交到服务器。检查您的访问日志文件中是否有双重帖子。

如果您以某种方式收到双重表单帖子,并且您的约束/事务处理没有正确完成,那么很容易做到这一点


双表单提交,尤其是由javascript触发时,可以非常及时地提交到服务器。检查你的访问日志文件中是否有两篇文章。

我想在其他文章之间,你有你的答案。数据库中的字段可能没有唯一的contstraint,有人双击了submit按钮,给了您一个双重帖子


正确设置数据库约束是一种很好的做法,根据经验,tpo通常最好在客户端单击javascript时立即禁用submit按钮,以防止那些仍然试图双击web上所有内容的用户。

我想在其他帖子之间,你有你的答案。数据库中的字段可能没有唯一的contstraint,有人双击了submit按钮,给了您一个双重帖子


正确设置数据库约束是一种很好的做法,根据经验,tpo最好在客户端单击javascript时立即禁用submit按钮,以防止那些仍然试图双击web上所有内容的用户。

当然,最可能的原因是用户提交了两次表单


避免这种情况的最好方法是使用t方法。

当然,最可能的原因是用户提交了两次表单


避免这种情况的最好方法是使用t方法。

不要依赖客户端验证!这些只是给来访者的信息。始终确保在服务器端完成验证

我的猜测是,有人用一个脚本订阅了你的网站,作为一种测试,添加了几十个帐户,用论坛垃圾邮件或其他什么东西填充你的网站。只需添加两个帐户,他们就可以测试这有多容易。显然,这很容易。下一次,他们可能会创建1000个帐户,并使用它自动向您的系统发送垃圾邮件。希望你能摆脱这一切


已经提供了重要提示:强制使用唯一的电子邮件地址和唯一的用户名。但是,当有人刚刚订阅了你的站点时,请确保他们在至少半小时内不能从该IP地址创建更多帐户。那么您就有点讨厌这些自动化脚本了。

不要依赖客户端验证!这些只是给来访者的信息。总是 确保在服务器端完成验证

我的猜测是,有人用一个脚本订阅了你的网站,作为一种测试,添加了几十个帐户,用论坛垃圾邮件或其他什么东西填充你的网站。只需添加两个帐户,他们就可以测试这有多容易。显然,这很容易。下一次,他们可能会创建1000个帐户,并使用它自动向您的系统发送垃圾邮件。希望你能摆脱这一切


已经提供了重要提示:强制使用唯一的电子邮件地址和唯一的用户名。但是,当有人刚刚订阅了你的站点时,请确保他们在至少半小时内不能从该IP地址创建更多帐户。那你就有点烦这些自动脚本了。

我不明白事务处理的那个部分?你是说数据库事务?你完全正确。这可能只是一个需要的唯一约束。我不理解事务处理的那个部分?你是说数据库事务?你完全正确。这可能只是一个需要的唯一约束。对不起,我必须问一下。这个建议比使email address字段唯一更好吗?从上下文来看,阿里注意到这一点只是因为有重复的电子邮件地址。如果是这样的话,那么从逻辑上讲,电子邮件地址字段应该设置一个唯一的约束,向表中添加另一个字段并使其唯一只会妨碍正确的设计,向数据库中添加不必要的数据,在未来的查询中,性能会下降,因为它是一个转换为varchar或其他SQL字符串数据类型的字符串,当用作索引时,它的性能会变慢……我还想说,我在上面的评论中问这个问题是为了认真理解和学习一些新的东西,而不是批评答案。对不起,但我不得不问。这个建议比使email address字段唯一更好吗?从上下文来看,阿里注意到这一点只是因为有重复的电子邮件地址。如果是这样的话,那么从逻辑上讲,电子邮件地址字段应该设置一个唯一的约束,向表中添加另一个字段并使其唯一只会妨碍正确的设计,向数据库中添加不必要的数据,在未来的查询中,性能会下降,因为它是一个转换为varchar或其他SQL字符串数据类型的字符串,当用作索引时,性能会变慢……我还想说,我在上面的评论中提出了这个问题,是为了认真理解和学习一些新的东西,而不是批评答案。考虑到安全性,+1。即使事实证明这个答案不适用于这种情况,最好先看看这个问题。考虑到安全性+1。即使事实证明这个答案不适用于这种情况,最好先看看这个问题。