防止垃圾邮件机器人提交表单

时间:2014-07-02 19:07:12

标签: jquery forms submit spam

我需要一些建议,以便最好地防止垃圾邮件机器人提交表单。我做了一些研究并提出了下面的代码。

机制是这样的 - HTML代码要求用户输入一个数字,如果输入的数字等于50,则jQuery返回true并提交表单。如果该值与50不同,则不提交表单。 如果用户填写表单,则代码可以正常运行,但垃圾邮件仍然是由垃圾邮件发送的。

我的问题如下 - 机器人是否绕过了jQuery代码并直接在服务器上提交表单,或者这是不可能的,他们猜测应该在该字段中输入50个?

我想得到一些专家意见,以决定我是否应该投入更多时间来改进当前代码(可能隐藏字段并为其设置默认值)或者我应该提出完全不同的解决方案。

谢谢大家!

$("#RegFrm").submit(function(){
         if ($('#samp').val() != 50) {

             return false;
         }
         else {

             return true;
         }
  })

1 个答案:

答案 0 :(得分:0)

您需要准备两种机器人类别:愚蠢的机器人和基于浏览器的无头机器人。

第一类只是一个美化的HTML解析器,它可以收集,填充和提交表单,所有这些都基于HTML。这些垃圾邮件程序无法运行JavaScript,因此它们将完全绕过原始问题中的JavaScript挑战。

基于浏览器的无头浏览器与常规网络浏览器一样智能(它们通常基于WebKit或Gecko),它们将运行JavaScript。从理论上讲,他们可以通过删除你的submit()事件处理程序来绕过你的JavaScript挑战(请注意,这是推测,我不知道他们是否经常这样做,虽然这样做有意义禁用验证)。

您在评论中提出的解决方案应该足以应对通用攻击。提示用户输入正确的值将要求spambot理解挑战(它赢得了)并且无论表单提交者是否理解JavaScript,在服务器端强制执行正确答案都将有效。