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