我在网站上设置了一个简单的垃圾邮件过滤器(以防止垃圾邮件表单提交),生成随机数并让用户输入。由于某种原因,垃圾邮件仍然可以通过而无需输入随机数。有没有人对如何发生这种情况有任何想法?
以下是代码:
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" />
答案 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提交表单,但无法提交表单。