最近,为了发布链接(反向机器人),我们的表单中出现了大量的机器人帖子。
我们添加了reCaptcha只是为了发现它已被破解,机器人可以找出正确的响应。
我们添加了一个Honeypot字段,但发现这些提交的内容是在不使用该表单的情况下发布的。看起来第一个目录是必填字段的表单然后只提交那些,破解验证码并将其垃圾邮件发布到评论字段。
我确信他们盲目地发布任何形式,认为他们将成为博客评论,所以我们联系我们的表格会陷入困境。
如果内容包含链接,则下一步是阻止提交。这似乎是最好的逻辑方法,因为它的目标是作为阻止的触发器。
问题:查找网址字符是查找垃圾邮件提交的最佳方法,还是将FILTER_SANITIZE_URL用作触发拒绝的挂钩?
答案 0 :(得分:0)
if (strstr($data,'http://')) {
echo "contains link";
}
答案 1 :(得分:0)
只是扩展我的评论,因为有些人似乎认为它有价值。
有几种方法。
我建议在表单中添加一个nonce作为隐藏字段。当用户从您的站点请求表单时,会创建一个nonce,该nonce必须与该用户一起返回该表单,以使其成为有效的提交。
这个答案提供了更多相关信息。 How to create and use nonces
您还说要阻止包含任何html的所有条目。一个简单的方法是
if (strip_tags($string) !== $string)
// Drop post as it had html in it
答案 2 :(得分:-1)
您可以传递一些校验和以及表单数据来验证它。 在客户端,在表单的“提交”事件中添加一个事件监听器,例如,您可以计算所有表单字段的长度总和,然后将其放在隐藏字段中。 在服务器端,以相同的方式计算校验和,并将其与隐藏字段中的内容进行比较。
长度总和是最简单的检查方式,但它会切断所有自动机器人,而不是完全针对您的网站。但是如果这还不够,你可以创建更复杂的算法来计算校验和,然后对这个javascript进行模糊处理,因此需要花费更多的精力来使这些机器人适应你的保护系统。