我有一个简单的表单,用户可以用它来注册新闻通讯的电子邮件地址。
我想防止垃圾邮件发送者提交 000 封虚假电子邮件。最好的方法是什么?
我考虑过将每个 IP 地址的输入数量限制为每小时 60 个,但后来认为任何确定的人都会简单地欺骗其 IP 作为攻击的一部分。
有什么想法吗?
*编辑:我正在寻找服务器端解决方案。在这种情况下,用户体验很重要,因此我不想使用验证码,或要求用户使用 token 进行验证
最佳答案
您可以使用否定验证码
。想法是有一个人类不可见的字段,但机器人可以在其中输入值。在服务器端,您可以忽略在负验证码字段中具有值的请求。
优点是普通用户看不到任何额外的步骤,例如输入验证码或验证电子邮件。缺点是,只要人们不会专门为您的网站定制机器人,该方法就有效。
否定验证码的示例。将其包含在您的表单中。
<div style="position: absolute; left:-2000px;"><input type="text" name="email_name" value="" /></div>
在服务器端做类似的事情
if (params[:email_name] != "") //bot
else //not a bot
关于javascript - 如何防止表单上出现垃圾邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18938405/