我目前正在开发一个周末粗略开发的小型聊天/论坛网站,它有匿名条目(即:没有用户名或密码)。这看起来很容易让垃圾邮件发送者毁掉,但我不想用验证码或类似的反垃圾邮件输入来打扰用户。
是否有任何对用户不可见的替代方案?谢谢你的帮助。
我目前正在开发一个周末粗略开发的小型聊天/论坛网站,它有匿名条目(即:没有用户名或密码)。这看起来很容易让垃圾邮件发送者毁掉,但我不想用验证码或类似的反垃圾邮件输入来打扰用户。
是否有任何对用户不可见的替代方案?谢谢你的帮助。
关于垃圾邮件发送者,您应该了解的一件事是,他们总是追求唾手可得的果实。黑客也一样。我的意思是他们会选择影响最多用户的最容易命中的目标。这就是为什么 PHP 和 Windows 漏洞经常被利用的原因:它们影响了如此多的用户,如果你发现这样的弱点/利用你的目标“市场”是巨大的。
这也是 Linux 和 Mac 操作系统相对不受病毒影响的一个重要原因:目标市场比 Windows 小得多。现在我并没有将 Windows 的安全性和稳健性与 Mac/Linux 等同起来,但尽管后两者的安全模型要好得多,但针对前者的攻击数量仍然与其缺陷不成比例。
我这样说是因为避免此类问题的最佳方法之一是不使用流行的软件。例如,phpBB 受到了很多攻击,因为它非常流行。
因此,通过建立自己的聊天/论坛系统,您处于劣势,因为您的系统没有流行的现场测试功能,但您也有一个优势,因为它不值得大多数垃圾邮件发送者花时间利用它。所以你需要注意的是自动化系统会对你做什么。网站上的联系表格往往具有可识别的标记(如姓名、电子邮件和评论字段)。
所以我建议:
不是防弹解决方案,但您可以有一些隐藏的输入字段。如果这些不是空的,你就抓住了一个机器人。机器人倾向于填写所有输入字段,而用户肯定会将他们看不到的字段留空。
这对我来说 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
}
如前所述,大多数机器人都会填写所有内容,尤其是名为“电子邮件”的输入。
验证码的想法是人类很容易通过,但机器人等很难避免。如果您不想要这种解决方案,什么会阻止这些垃圾邮件机器人发布到您的网站?
就像您希望您的计算机安全但又不想使用防病毒软件和防火墙一样。
我认为您可以为进入您网站的每个用户创建一个会话,并在他们第一次发布内容时向他们显示验证码(不需要登录,只需通过验证码)。如果他们通过它,只需在会话中存储他们是人类的标志。只要他们打开浏览器,他们就可以在您的网站上发布和回复他们想要的内容。机器人不太可能通过第一次测试。
有两类反垃圾邮件保护。
首先是使自动机器人难以将数据偶然发现到您的站点中。隐藏表单域方法为此经常被提及,适用于低流量站点。为您的网站编写的垃圾邮件机器人可以轻易地破坏这些保护措施。但是,如果您的目标太小,则不会发生这种情况。
二是“麻烦”类型。这通常涉及验证码、注册或邮件确认。您可以使用一些方法来减少这种麻烦,但需要在机器人方面付出更多努力才能发布垃圾邮件。
请注意,这两种方法通常都会阻碍残疾人和移动用户。