7

我目前正在开发一个周末粗略开发的小型聊天/论坛网站,它有匿名条目(即:没有用户名或密码)。这看起来很容易让垃圾邮件发送者毁掉,但我不想用验证码或类似的反垃圾邮件输入来打扰用户。

是否有任何对用户不可见的替代方案?谢谢你的帮助。

4

5 回答 5

9

关于垃圾邮件发送者,您应该了解的一件事是,他们总是追求唾手可得的果实。黑客也一样。我的意思是他们会选择影响最多用户的最容易命中的目标。这就是为什么 PHP 和 Windows 漏洞经常被利用的原因:它们影响了如此多的用户,如果你发现这样的弱点/利用你的目标“市场”是巨大的。

这也是 Linux 和 Mac 操作系统相对不受病毒影响的一个重要原因:目标市场比 Windows 小得多现在我并没有将 Windows 的安全性和稳健性与 Mac/Linux 等同起来,但尽管后两者的安全模型要好得多,但针对前者的攻击数量仍然与其缺陷不成比例。

我这样说是因为避免此类问题的最佳方法之一是不使用流行的软件。例如,phpBB 受到了很多攻击,因为它非常流行。

因此,通过建立自己的聊天/论坛系统,您处于劣势,因为您的系统没有流行的现场测试功能,但您也有一个优势,因为它不值得大多数垃圾邮件发送者花时间利用它。所以你需要注意的是自动化系统会对你做什么。网站上的联系表格往往具有可识别的标记(如姓名、电子邮件和评论字段)。

所以我建议:

  • 忽略将表单发送给用户的 5-10 秒内的响应;
  • 使用蜜罐(CSS/JS 隐藏字段,如其他地方所述);
  • 在适用的情况下使用 Javascript 呈现、重新排序或显示表单;
  • 使用不可预测的表单字段名称;和
  • 通过 IP 限制不良响应。
于 2009-08-02T05:10:54.490 回答
6

不是防弹解决方案,但您可以有一些隐藏的输入字段。如果这些不是空的,你就抓住了一个机器人。机器人倾向于填写所有输入字段,而用户肯定会将他们看不到的字段留空。

于 2009-08-02T04:55:40.230 回答
2

这对我来说 100% 的时间都有效:

<input type="text" style="display:none" name="email" value="do not fill this in it is for spam catching" />

然后服务器端(PHP):

if($_POST['email'] != 'do not fill this in it is for spam catching') {
    // spam
}

如前所述,大多数机器人都会填写所有内容,尤其是名为“电子邮件”的输入。

于 2009-08-02T05:05:24.987 回答
0

验证码的想法是人类很容易通过,但机器人等很难避免。如果您不想要这种解决方案,什么会阻止这些垃圾邮件机器人发布到您的网站?

就像您希望您的计算机安全但又不想使用防病毒软件和防火墙一样。

我认为您可以为进入您网站的每个用户创建一个会话,并在他们第一次发布内容时向他们显示验证码(不需要登录,只需通过验证码)。如果他们通过它,只需在会话中存储他们是人类的标志。只要他们打开浏览器,他们就可以在您的网站上发布和回复他们想要的内容。机器人不太可能通过第一次测试。

于 2009-08-02T05:02:35.007 回答
0

有两类反垃圾邮件保护。

首先是使自动机器人难以将数据偶然发现到您的站点中。隐藏表单域方法为此经常被提及,适用于低流量站点。为您的网站编写的垃圾邮件机器人可以轻易地破坏这些保护措施。但是,如果您的目标太小,则不会发生这种情况。

二是“麻烦”类型。这通常涉及验证码、注册或邮件确认。您可以使用一些方法来减少这种麻烦,但需要在机器人方面付出更多努力才能发布垃圾邮件。

请注意,这两种方法通常都会阻碍残疾人和移动用户。

于 2009-08-02T05:05:03.973 回答