2010-03-12 87 views
3

我们正在使用垃圾邮件机器人对其中一个相当大的网站发布问题。看起来机器人正在创建用户帐户,然后发布导致各种垃圾邮件链接的日记条目。防止垃圾邮件机器人在现场?

看来他们以某种方式绕过我们的验证码 - 无论是已被破解,或他们正在使用另一种方法来创建帐户。

我们希望为帐户启用电子邮件激活,但我们距离实施此类更改大约一周(由于繁忙的日程安排)。

但是,如果他们在网站某处使用SQL漏洞并执行整个跨站点脚本的事情,我不觉得这样做会是不够的。所以我的问题给你:

如果他们正在使用某种XSS漏洞,我怎么能找到它?我尽可能地保证声明的安全,但是,它又是一个相当大的站点,需要我花一些时间主动清理SQL语句以防止XSS。你能推荐什么来帮助我们的情况?

+0

您的验证码是如何实现的以及用户已成功完成它的事实标记?我的意思是,我认为这不仅仅是POST中的“captchaokay = 1”参数。 :-)您是否使用了像[reCAPTCHA](http://recaptcha.net/)或类似的经过验证的验证码解决方案? – 2010-03-12 15:14:21

+0

现在使用Securimage Captcha(http://www.phpcaptcha.org/),但当然不反对切换到reCAPTCHA。 – Mike 2010-03-12 15:20:49

回答

3

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

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

3)验证电子邮件地址绝对是一个好主意,因为它需要一个有效的电子邮件帐户,许多垃圾邮件发送者都没有。只要确保您验证电子邮件地址容易,就好像它太困难一样,它也可以让合法用户离开。

1

如果机器人在某个地方的脚本中利用了一个洞,那么在日志中应该有这种证据。在命中之前检查用户创建脚本和日志条目创建脚本的直接POST,而没有通常的“正常”冲浪活动:机器人可能只拖了一次,并且绕过了拉下表单并假装填充他们进来。在查询字符串中查找带有明显XSS类型数据的GET请求。

您也可以在表单内的隐藏字段中嵌入一个随机标记,并要求该标记存在才能通过激活/发布。如果僵尸工具只解析你的注册脚本并且做直接的帖子,这将阻止他们在他们的轨道上,直到僵尸创建者赶上并寻找令牌。但它会给你一些喘息的空间来实现一个更好的系统。

如果您的用户帐户表上没有某种创建时间戳的时间戳,请将其中一个添加进来,并让服务器创建时间戳,而不是您的用户脚本。通过这种方式,您可以缩短扫描日志以查看机器人活动的时间段,并查看他们在做什么。如果没有别的,你可以阻止机器人发布的IP地址。