【问题标题】:Preventing spam bots on site?防止现场垃圾邮件机器人?
【发布时间】:2010-03-12 15:09:45
【问题描述】:

我们在一个相当大的网站上遇到了一个带有垃圾邮件机器人的问题。机器人似乎正在创建用户帐户,然后发布导致各种垃圾邮件链接的日记条目。

他们似乎以某种方式绕过了我们的验证码——要么它已被破解,要么他们正在使用另一种方法来创建帐户。

我们希望为帐户进行电子邮件激活,但距离实施此类更改还有大约一周的时间(由于日程繁忙)。

但是,如果他们在站点的某处使用 SQL 漏洞利用并执行整个跨站点脚本操作,我认为这还不够。所以我的问题是:

如果他们正在使用某种 XSS 漏洞,我该如何找到它?我正在尽我所能保护语句,但同样,它是一个相当大的站点,我需要一段时间来积极清理 SQL 语句以防止 XSS。您能推荐一些可以帮助我们解决问题的方法吗?

【问题讨论】:

  • 您的验证码是如何实施的,以及用户已成功完成验证码的事实?我的意思是,我认为它不仅仅是 POST 中的“captchaokay=1”参数。 :-) 您是否在使用经过验证的验证码解决方案,例如 reCAPTCHA 或类似的解决方案?
  • 暂时使用 Securimage Captcha (phpcaptcha.org),但肯定不反对改用 reCAPTCHA。

标签: php mysql xss cross-site


【解决方案1】:

1) 如上所述reCAPTCHA 是一个好的开始。

2) Askimet 是在垃圾邮件发布之前标记垃圾邮件的好方法。这是 Wordpress 用来阻止垃圾邮件的方法,而且非常有效。然后,您可以根据结果拒绝或排队审核条目。它的 API 也非常易于使用。 (如果你需要的话,我有 PHP 代码)。尽管我确信您可以开始使用免费版本,但您可能需要商业许可证。

3) 验证电子邮件地址绝对是一个好主意,因为它需要一个有效的电子邮件帐户,而许多垃圾邮件发送者没有。只要确保您使验证电子邮件地址变得容易,就好像它太难了,它也会把合法用户拒之门外。

【讨论】:

    【解决方案2】:

    如果机器人在某处利用脚本中的漏洞,日志中应该有证据。检查用户创建脚本和日记条目创建脚本的直接 POST,在命中之前没有通常的“正常”冲浪活动:机器人可能只对网站进行了一次拖钓,并绕过了拉下表单并假装填写的步骤在查询字符串中查找带有明显 XSS 类型数据的 GET 请求。

    您还可以在表单的隐藏字段中嵌入一个随机令牌,并要求该令牌存在,以便激活/发布通过。如果机器人只解析一次您的注册脚本并进行直接发布,这将阻止它们继续前进,直到机器人创建者赶上并寻找令牌。但它会给你一些喘息的空间来实施一个更好的系统。

    如果您的用户帐户表上没有某种类型的创建时间时间戳,请放入一个并让服务器创建时间戳,而不是您的用户脚本。通过这种方式,您可以缩小扫描日志以查找机器人活动并查看它们在做什么的时间段。如果不出意外,您可以阻止机器人发布的 IP。

    【讨论】:

      【解决方案3】:

      我很惊讶有人可以建议 Akismet 并被接受为答案:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-04
        • 2017-04-10
        • 2014-09-26
        • 2014-05-19
        • 2014-08-12
        • 2012-06-12
        • 2021-08-11
        • 2011-08-03
        相关资源
        最近更新 更多