0

最近,为了发布链接(反向链接机器人)的目的,我们的表单中出现了大量机器人帖子。

我们添加了 reCaptcha 只是发现它已被破解,并且机器人可以找出正确的响应。

我们添加了一个蜜罐字段,但发现这些提交是在不使用表单的情况下发布的。看起来第一个目录是必填字段的表单,然后只提交那些,破解验证码并将他们的垃圾邮件发布到评论字段。

我敢肯定,他们会盲目地在任何表单上发帖,以为他们会成为博客评论,所以我们的联系我们的表单陷入了混乱。

如果内容包含链接,下一步是阻止提交。这似乎是最好的逻辑方法,因为它可以作为阻止触发器的目标。

问题:寻找 url 字符是隔离垃圾邮件提交的最佳方法,还是 FILTER_SANITIZE_URL 可以用作触发拒绝的钩子?

4

3 回答 3

0
if (strstr($data,'http://')) {
    echo "contains link";
}
于 2013-08-01T15:37:12.090 回答
0

只是扩展我的评论,因为一些人似乎认为它有价值。

有几种方法可以解决这个问题。

我建议在您的表单中添加一个随机数作为隐藏字段。当用户从您的站点请求表单时,会创建一个 nonce,该用户必须将其与表单一起返回,才能使其成为有效提交。

这个答案提供了更多相关信息。如何创建和使用随机数

您还说要阻止所有包含任何 html 的条目。一个简单的方法是

if (strip_tags($string) !== $string)
    // Drop post as it had html in it
于 2013-08-01T15:55:55.980 回答
-1

您可以通过一些校验和连同表单数据来验证它。在客户端,在表单的“提交”事件上添加一个事件监听器,例如,计算所有表单字段的长度总和,然后将其放入隐藏字段。在服务器端,以相同的方式计算校验和,并将其与您在该隐藏字段中获得的内容进行比较。

长度总和是最简单的检查方法,但它会切断所有不完全针对您的网站的自动机器人。但如果这还不够,您可以创建更复杂的算法来计算校验和,然后对该 javascript 进行混淆,因此需要花费更多的精力来调整这些机器人以适应您的保护系统。

于 2013-08-01T15:28:04.803 回答