2011-11-04 94 views
1

我有一个简单的垃圾邮件过滤器(防止垃圾邮件表单提交)设置在网站上通过产生一个随机数,且用户输入。出于某种原因垃圾邮件仍然能够通过,甚至没有输入随机数。有没有人有任何想法,这可能会发生?垃圾邮件通过简单的垃圾邮件过滤器得到的,但我不知道该怎么

下面的代码:

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

为什么'else'在'validateForm()'中被注释掉? –

+0

对不起,它没有被注释掉,我只是把它复制错了。 – user671891

+0

用户可以禁用JavaScript。所以他们可以绕过这个垃圾邮件过滤器。 – user671891

回答

1

上的选项,为什么垃圾邮件机器人越来越槽的是,他们不使用JavaScript和做形式的直接提交。

其中一个选项虽然是与AJAX异步发送表单。它可能会让您免于某些僵尸程序(以及禁用了JavaScript的用户)。

我不知道如何垃圾邮件机器人的内在逻辑,但我认为,对“形”标记机器人搜索和尝试投递表单内容到形式的行动参数。 这种情况下,动作表单参数和AJAX表单提交的“拆分字符串编码”可能会有所帮助。

但是,请记住,如果你的网站是不是对机器人主要目标这一招才有效。

0

我没有看到任何与您即时错误的JavaScript,但是,任何用户都可以禁用:

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; 
    } 


} 

用户通过按下这个按钮提交表单JavaScript在他们的浏览器中,所以这些功能不会执行。正因为如此,你不应该仅仅依靠javascript来进行表单验证。用诸如PHP之类的服务器端语言进行备份要安全得多。

+0

尽管如此,问题在于我的服务器上没有PHP,这是我无法控制的,因为它是我的雇主的。有没有其他反垃圾邮件方法我可以使用,不使用PHP? – user671891

+0

@user:当然,如果他们使用ASP.net。或者如果他们使用,我不知道,Perl。但是你需要某种服务器端代码。客户端上的任何内容都可以伪造,伪造,禁用或以其他方式获得。 – cHao

0

使用PHP/ASP.NET/ColdFusion或任何您正在使用的服务器端验证。从不完全依赖客户端验证,它最容易受到黑客攻击和滥用。

一旦表单填写完毕后,该值应该被发送到,比方说,你检查的价值在于它你期待一个review.php页面。如果正确,则正常继续,否则结束表单/提交代码的执行并将用户重定向到错误页面。

+0

只是让我们知道你有什么'语言'可以访问 – Sotkra

0

您可以使用JavaScript来提交表单这样,如果一个机器人已禁用JS无法提交表单。