在网站上预防垃圾邮件机器人?

时间:2010-03-12 15:09:46

标签: php mysql xss cross-site

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

看起来他们正在以某种方式绕过我们的验证码 - 要么已被破解,要么他们正在使用其他方法来创建帐户。

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

但是,如果他们在网站上的某个地方使用SQL漏洞并完成整个跨站点脚本编写工作,我觉得这样就不够了。所以我向你提问:

如果他们使用某种XSS漏洞,我该如何找到它?我正在尽可能地保护语句,但是,它又是一个相当大的站点,我需要一段时间来主动清理SQL语句以防止XSS。你能推荐一些可以帮助我们的事情吗?

3 个答案:

答案 0 :(得分:3)

1)如上所述,reCAPTCHA是一个良好的开端。

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

如果僵尸程序在某个地方利用脚本中的漏洞,那么日志中应该有这样的证据。在点击之前检查用户创建脚本和日记条目创建脚本的直接POST而没有通常的“正常”冲浪活动:机器人可能只扫描了一次网站,并且绕过了下拉表格并假装填写的步骤在查询字符串中查找具有明显XSS类型数据的GET请求。

您还可以在表单中的隐藏字段中嵌入随机令牌,并要求该令牌出现以供激活/发布通过。如果僵尸程序只解析了你的注册脚本并且正在进行直接发布,那么这将阻止它们在他们的轨道中,直到机器人创建者抓住并查找令牌。但它会给你一些喘息的空间来实现一个更好的系统。

如果您的用户帐户表上没有某种创建时间戳,请将其中一个放入并让服务器创建时间戳,而不是您的用户脚本。通过这种方式,您可以缩短扫描日志以查看机器人活动的时间段,并查看它们正在执行的操作。如果没有别的,你可以阻止机器人发布的IP。