我不敢相信 - 有人实际上使用同一个电子邮件在我的社交网站上创建了两个帐户,尽管同时存在服务器端和客户端验证检查来防止这种事情发生。但是得到这两个帐户的创建时间是完全相同的时间。
出于某种原因,我怀疑这是否可以使用表单或任何界面 - 但是我很想知道这是怎么发生的?有人在这里有什么想法吗?
我不敢相信 - 有人实际上使用同一个电子邮件在我的社交网站上创建了两个帐户,尽管同时存在服务器端和客户端验证检查来防止这种事情发生。但是得到这两个帐户的创建时间是完全相同的时间。
出于某种原因,我怀疑这是否可以使用表单或任何界面 - 但是我很想知道这是怎么发生的?有人在这里有什么想法吗?
出于某种原因,我怀疑这是否可以使用表单或任何界面 - 但是我很好奇这是如何发生的?任何人都在这里有任何想法!
最有可能的是,您没有正确跟踪的浏览器双重发布。
如果您不希望两个人在您的社交网络中共享一个电子邮件地址,请对字段进行UNIQUE
限制。email
为避免重复发帖,请在页面上的隐藏控件中生成随机字符串,将其保存在列中,并将此列设为UNIQUE
。
可能是因为你没有处理数据库中的这个唯一约束,如果你对数据库中的电子邮件列有一个唯一约束,那么你就不会遇到那种问题
您应该在 users 表的email
orusername
列上设置唯一约束。
不要依赖客户端验证!这些仅供访问者作为信息。始终确保验证是在服务器端完成的。
我的猜测是,有人使用脚本订阅您的网站作为测试,以添加数十个帐户,以使您的网站充满论坛垃圾邮件或其他内容。只需添加两个帐户,他们就可以测试它是多么容易。显然,这很容易。下一次,他们可能会创建一千个帐户并使用它来自动用垃圾邮件淹没您的系统。祝你好运,试图摆脱这一切。
已经提供了重要提示:强制使用唯一的电子邮件地址和唯一的用户名。但是,当有人刚刚订阅您的网站时,请确保他们至少在半小时内无法从该 IP 地址创建更多帐户。然后你会有点烦这些自动化脚本。
如果您以某种方式收到双表单帖子并且您的约束/事务处理未正确完成,则很容易做到这一点。
双重表单提交(特别是当由 javascript 触发时)可以在时间上与服务器相当接近。检查您的访问日志文件是否有双重帖子。
当然,最可能的原因是用户提交了两次表单。
避免这种情况的最好方法是使用post 后重定向方法。
我想在其他帖子之间,你有你的答案。数据库中的字段可能没有唯一的约束,并且有人双击提交按钮给你一个双重职位。
根据经验,正确设置数据库约束是一种很好的做法,通常最好在单击客户端单击 (javascript) 时禁用提交按钮,以防止那些仍然尝试双击网络上所有内容的用户。