防止寄存器上的数据库泛滥

Preventing database flooding on register

我有一个小网页,您现在可以 login/register。一切都已完成,但我想让它对我来说更安全 - 服务器端。

目前,系统会验证您的输入,但如果输入正确,它将注册用户并发送验证电子邮件。我有点害怕有人会制作一些机器人,它会生成随机有效输入并淹没我的数据库。

我在考虑我数据库中的 IP 地址 table,这样我就可以限制一个 IP 只注册 3-4 个用户,但后来我意识到有很多本地 ISP,它们正在使用一个 public IP 用于多个主机,这样就不太好了。我也在考虑制作一些cookie,这样cookie会在5次注册后禁止用户一段时间,但用户可以轻松删除cookie并重新开始。

我有一个小的 cron 工作,可以在一周后清理未经验证的用户,但那是很多时间,所以这对我也没有帮助。

你有什么建议吗?我想用 php-mysql 编写它,但如果有更好的方法用 js 或任何其他语言来完成它,我愿意征求建议。也许有人对这样的事情有一些经验?谢谢。

使用CAPTCHA防止自动表单欺骗。

The term CAPTCHA (for Completely Automated Public Turing Test To Tell Computers and Humans Apart) was coined in 2000 by Luis von Ahn, Manuel Blum, Nicholas Hopper and John Langford of Carnegie Mellon University.

好吧,如果你觉得你可以让用户回答一个小的附加问题,比如

2 + 9 = [ ]

两个数字都是随机生成的,您可以在cookie中加密答案.. 确保在加密答案时使用良好的salt