2013-03-19 48 views
1

我们正在使用phpforms.net作为我们的一个php网页。我们正在通过bs表单提交不间断的垃圾邮件。如何停止CURL表单垃圾邮件发送者?

他们显然使用一些更复杂的再一个机器人只是自动填写表格,因为他们能够绕过最大长度HTML要求,页面上的所有javasript。这个Auto fill and submit forms on external site 显示了一种使用CURL重新发送POST的方法,所以我想知道如果这是我反对,我该如何阻止它?

+1

您是否试过captcha? – 2013-03-19 19:28:32

+0

不幸的是,这是captcha和recaptcha存在的原因之一。另一种选择是一种AKISMET风格的系统,它自己查看表单提交并试图确定它们是否是垃圾邮件。 – BrianHall 2013-03-19 19:30:37

+0

实际上,使用bot构建POST请求是一件简单的事情。有一个浏览器和自动填写表格会更复杂... – mensi 2013-03-19 19:30:51

回答

2

reCaptha会救你! :^) 它看起来不错,它的代码很容易实现。

+0

因此,reCaptch可以停止CURL垃圾邮件是不是它基于JavaScript? – nodsdorf 2013-03-19 19:53:53

+0

您应该阅读[CAPTCHA](http://en.wikipedia.org/wiki/CAPTCHA)测试。简而言之,它的想法是,只有通过验证码测试才能接受请求。这个请求是如何提出的 - 通过表单提交,通过CURL或直接从火星传递的信息:没有腿 - 没有糖果。 – 2013-03-19 20:00:11

1

根据PHPForms Features他们提供reCATPCHA。这实际上是为什么captcha被发明的原因 - 因为垃圾邮件机器人滥用html表单。

Captcha验证码的方法是尝试很难让一个机器人提交表单,无需人工干预。另一种方法是提交启发式流程,如Akismet,它试图通过查看提交的文本本身来确定垃圾邮件。

所以基本上你要么让它稍硬通过坚持验证码有效性提交表单,或者你只是对付垃圾邮件。

0

如果你只是处理一个特定的机器人,你可能会阻止该用户代理。

来自实例How to block some of http user agent using php

$badAgents = array('fooAgent','blahAgent', 'etcAgent'); 
if(in_array($_SERVER['HTTP_USER_AGENT'],$badAgents)) { 
    exit(); 
} 

或者只是一般卷曲:

if (strpos($_SERVER['HTTP_USER_AGENT'], 'curl') !== false) 
    exit; 

在许多情况下,它们并不是真正的攻击这么多,因为笔者没有意识到他们的代码粘贴在您的现场。如果它确实是某种恶意活动,那么是的,你需要一个验证码。

+0

你可以很容易伪造'HTTP_USER_AGENT' – Baba 2013-03-19 19:56:26

+0

@Baba是的。因此,如果它是恶意的,这是行不通的。然而,实际上机器人在他们身后并没有一个活跃的人类思维,所以可以用这样简单的方法轻松停止。 – 2013-03-19 20:19:54

0

使用服务器端代码进行验证应该在服务器端进行处理。如果有问题的客户端不与JavaScript交互,JavaScript将不会执行任何操作。

验证服务器端,即使你使用一个验证码,你应该始终验证服务器上的信息。 使用验证码系统或文本分析系统或两者,如reCaptchamollomakismet

0

这可能不会帮助你,但我最近碰到了一个垃圾邮件问题。我试过这个解决方案,它已经完全解决了垃圾邮件问题。 没有必要使用验证码:

在您的表单中,创建一个新的输入字段,并在您的CSS中使用display: none隐藏它。该字段是垃圾邮件陷阱。真正的用户看不到这个字段,但垃圾邮件机器人可以。因此,在后端,如果来自此隐藏字段的$_POST数据包含任何内容,则提交的内容为垃圾邮件,您可以按照这种方式处理。

了解更多关于它here

0

我做了几件事。我实际上使用reCaptcha,然后有一个空白的文本字段,我用jQuery隐藏,因为一些机器人实际上可以读取一些CSS,并且如果display:none被附加到它,将不会填充字段。

一如既往,你也应该做一些后端处理。除了验证我刚刚说的lameCaptcha字段外,如果前端有必填字段,则使用trim()并验证它实际上是否有值。如果没有价值,那就不要实际处理表单。

3

我最近创建了一个类,以防止使用Captha的垃圾邮件。 它有3件事。

蜜罐:字段为display:none。垃圾邮件机器人可以看到它并将填充它,但您的合法用户不会。如果它有任何价值,那么表格是无效的。

微调框:在呈现表单之前创建并存储在会话中的随机字符串,然后发布在type="hidden"输入中。如果提交后字符串不同,则表单无效。

随机字段名称:存储在每个字段名称的会话(每个表单请求)随机字符串

在窗体上实现此之后,从每天100多个垃圾邮件无人去了。

我记得在阅读这些文章时,我会试着去寻找它。