【问题标题】:Fighting robot spam different way以不同的方式对抗机器人垃圾邮件
【发布时间】:2012-09-24 09:46:06
【问题描述】:

我有一个格式简单的网站,可以将输入作为推文发布到 Twitter 帐户。

没有安装验证码或任何类型的反垃圾邮件系统,因此垃圾邮件机器人疯狂地发布他们的虚假内容是合乎逻辑的。

现在,我想构建一个不需要任何验证码的验证。

这是我一直在想的,我需要你的诚实意见。

如果机器人在不使用鼠标或键盘的情况下发布他们的东西(可能是通过使用某种生成的脚本),那么这实际上意味着它们无法将任何形式的焦点放在表单本身上。

我的想法是创建一个简单的 js 条件,在没有获得某种焦点的情况下无法提交表单。

您对此有何看法? 还有其他类似的想法吗?

谢谢!

【问题讨论】:

  • 如果你根本不加载javascript,它会工作吗?因为 bot 可能不会加载 js。
  • 我认为这是个坏主意,因为可以使用 Perl、cURL、Python 等直接发送 POST 请求,完全绕过您的表单并将数据作为 POST 请求直接发送到服务器。
  • 我同意。请阅读下面的答案和精选 cmets :)

标签: javascript jquery validation robot spam-prevention


【解决方案1】:

在推特上发布未经验证的消息的想法本身听起来很不安全。尽管如此,仍有一些方法可以最小化垃圾邮件。

例如,您可以实现一个honeypot 变体,将另一个字段添加到提交表单,但以对实时用户隐藏的方式。机器人会错误地填写它,您可以在服务器端拒绝提交 - 信不信由你,大多数垃圾评论来自爬虫,因此即使是这样的基本方法也可以大大减少提交的恶意内容的数量。

您的假设是正确的,即大多数机器人发布“不使用鼠标或键盘” - 这样做比模拟客户端活动要简单得多。同样,您可以利用它来发挥自己的优势 - 添加一个将由 JS 填充的字段并在服务器端验证其内容。

【讨论】:

  • 此外,使用具有多个 data- 属性的隐藏输入字段作为数字(例如 data-num1="7" data-num2="5"),然后使用 javascript 将这些数字相加并填充隐藏输入的值。验证时,如果输入不是两个数字的总和,则可能是垃圾邮件。
  • 一个有趣的想法,我不久前已经做过类似的事情了。基本上我可以实现用不重要的字符串填充隐藏字段的js,并且仅当隐藏字段具有该值时才提交表单。否则,它不会被提交。那怎么样?
  • 或者,使用 javascript 在 5 秒后添加隐藏的输入字段?如果缺少该字段,则为垃圾邮件。
  • 太棒了,比我早几秒 :)
  • 使用 JS 或任何其他不显眼的技术(recaptcha is 哦,太显眼了)的问题是,如果有人 真的 想要针对您的网站,他们可能会成功。在客户端执行的任何逻辑都会被恶意脚本模拟
猜你喜欢
  • 2014-05-19
  • 2011-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-12
  • 2013-05-05
  • 2014-09-26
相关资源
最近更新 更多