什么是在我的.js表单上减慢(或停止)垃圾邮件或僵尸程序活动的最佳方法

时间:2011-07-25 08:43:07

标签: php javascript jquery

这是(.click)...

上的if语句示例
$('#submit').click(function () {
***********************************
var email = $('input[name=email]');  
***********************************
if (email.val()=='') {
    email.addClass('hightlight');
    return false;
    } else email.removeClass('hightlight');
...
$('#submit').click(function () {
...
var email = $('input[name=email]');    

这是一个包含其他数据的PHP Ajax联系表单。我最终从例如.ru(俄罗斯)那里收到了很多垃圾邮件,所以在if语句中错误排除最常见的垃圾邮件是好的,或者最好只使用验证码。如果是这样的话,对一个简单的参考文献的任何好的参考都是明显的,并且在这种情表格是在 http://www.shaneofalltrades.com/index.html#contact 对任何想法持开放态度。

6 个答案:

答案 0 :(得分:2)

最好的事情是服务器端验证(某种验证码)。不要仅依赖客户端验证。

答案 1 :(得分:1)

如果您收到大量垃圾邮件,最好的办法就是添加验证码(reCAPTCHA)。

如果评论中包含网址或可疑内容,您可以添加一些代码以仅添加验证码。

答案 2 :(得分:1)

我认为最好的方法是使用像recaptcha这样的验证码服务。或者只是实现一个必须在帖子之前回答的简单随机计算。像“什么是1 + 3?”这样的东西

答案 3 :(得分:1)

  

...或者最好只使用验证码。如果是这样的话,任何对一个简单的参考文献都有明显的参考,并且明智地用于这种情况......

reCAPTCHA非常易于集成,广泛使用且得到良好支持。

答案 4 :(得分:1)

我会在表单上添加一个mousemove触发器,用于设置隐藏变量以接受表单

<input type='hidden' name='isValid' value='no' />
<script type='text/javascript'>
$('form').mousemove(function(){
    $('input[name=isValid]').val('yes');
})
</script>

并在服务器端检查。

答案 5 :(得分:1)

我对这两个选项中的任何一个都有很好的经验:

  1. 使用在页面上生成的基于会话的令牌,然后使用表单提交,然后评估服务器端。这需要“bot”使用cookie,并使用两个请求来发布您的表单。大多数简单机器人都不这样做。

  2. 使用onsubmit事件挂钩设置提交时的实际表单操作。这样,脚本无法轻松读出要发布的目标网址,而无需处理javascript。例如:

  3. <form onsubmit="this.action = ['formpost','php'].join('.')">

    通过将事件附加到单独的js文件中,您可以对其进行更多的混淆,但是对于禁用javascript,删除或者页面上的javascript中断的人来说,不会有后退。

    附加:有一项名为keypic.com的新服务值得研究。 http://www.keypic.com/

    它的工作方式是它依赖于客户端实际从第三方服务器(大多数机器人不会)获取图像,然后您可以在提交时重新验证。如果您愿意,这个系统很容易复制。