垃圾邮件通过简单的垃圾邮件过滤器,但我不知道如何

时间:2011-11-04 18:37:35

标签: html forms filter spam

我在网站上设置了一个简单的垃圾邮件过滤器(以防止垃圾邮件表单提交),生成随机数并让用户输入。由于某种原因,垃圾邮件仍然可以通过而无需输入随机数。有没有人对如何发生这种情况有任何想法?

以下是代码:

var randomnumber=Math.floor(Math.random()*1001);
var isNumberEnteredCorrect = false;
var whatevertheyentered;


function checkUserInput(whatevertheyentered){

if(whatevertheyentered == randomnumber){
    return true;
}
else {
    return false;
}
}

function validateForm()
{
var x = document.forms["myForm"]["random_number"].value;

  if(x == randomnumber){
    return true;
  }

  else{
    alert("The number you've entered is incorrect.");
    return false;
  }


}

用户通过按此按钮提交表单:

 <input name="Submit" type="submit" class="button" value="Send Message" />

4 个答案:

答案 0 :(得分:1)

关于选项,为什么垃圾邮件机器人陷入低谷是因为他们不使用JavaScript并直接提交表单。

其中一个选项是使用AJAX异步发送表单。它可能会从一些机器人(以及禁用了JavaScript的用户)中拯救你。

我不知道垃圾邮件如何内部逻辑,但我认为机器人搜索“form”标签并尝试将表单内容发布到表单的action参数。 在这种情况下,动作表单参数和AJAX表单提交的“分裂字符串编码”可能有所帮助。

但是,请记住,只有当您的网站不是僵尸程序的主要目标时,此技巧才有效。

答案 1 :(得分:0)

我没有看到你的javascript立即出现任何错误,但是,任何用户都可以在浏览器中禁用javascript,这样这些功能就无法执行。因此,您不应该只使用javascript进行表单验证。使用PHP等服务器端语言进行备份会更加安全。

答案 2 :(得分:0)

使用PHP / ASP.NET / ColdFusion或您正在使用的任何内容进行服务器端验证。永远不要完全依赖客户端验证,它最容易被黑客攻击和滥用。

填写表单后,应将值发送到review.php页面,在该页面中检查该值是否符合您的预期。如果正确,请继续正常,否则结束表单/提交代码的执行,并将用户重定向到各种错误页面。

答案 3 :(得分:0)

如果机器人已禁用JS,您可以使用Javascript提交表单,但无法提交表单。