当我经常向注册按钮发送垃圾邮件并继续交换用户名(快速!)时,我的数据库中有时会出现重复。如果我做得慢,那就没有重复了。
用户名检查是否有可能在逻辑中的createUser
之前太远,并且一个脚本仍在处理中间的逻辑而另一个脚本只是通过了检查?如果是这样,假设您的请求足够快,是不是每个Web应用程序都容易受到此类攻击?你怎么能阻止这个?
希望有人可以提供帮助: - /
答案 0 :(得分:1)
您可以确保在多个用户单击按钮时触发一个查询(这是不可能的)或在数据库中设置约束 - 使列唯一或主键 ,我个人建议使用unique。
数据库检查更好,代码更少。但是,您需要捕获每个插入错误,并向用户反馈用户已经采用的用户名。