我允许用户使用注册表格在我的网站上注册。提交表单后,将生成令牌并将其通过电子邮件发送给用户,他们需要单击令牌链接以激活其帐户。
我的问题是,如果我这样做了,恶意代码是否仍然可以向我的网站发送多封电子邮件进行注册,我应该使用验证码来保护网站还是有其他方法?
如果您只想防止重复提交,则可以为提交时检查的表单生成唯一的令牌。如果每页有多个表单,则需要进行一些思考。另外,一种简单的方法是仅在提交时禁用表单/按钮。如果通过Ajax提交表单,这将更加有效(这样就可以缺少表单的action参数,因此不容易获取)。
如果您想防止自动提交(由bot提交),虽然Captcha可能是最常用的常用方法,但它也很容易受到用户的敌视。取而代之的是,除非您有理由相信自己的网站被专门定位,否则通常只需使用蜜罐字段(人类永远不会填充而机器人会填充的不可见字段)和您用已知字段填充的隐藏字段就足够了。使用JS短暂延迟后的值(机器人通常不会执行JS,也不会花时间输入像人类一样的字段)。通常只需完成Ajax提交就足够了。我建议先使用这些方法中的一种或多种,再使用Captcha。