如何在没有任何验证码的情况下保护Facebook等网站免受僵尸程

时间:2013-03-27 15:20:11

标签: facebook captcha

Facebook和Twitter等网站在注册过程中如何防范僵尸程序?我的意思是,注册表上根本没有验证码?

我想为一个项目创建一个注册表单,我不希望在注册过程中使用bot,并且Captchas通常很难看。

修改 我的问题是在注册期间,因为我知道Facebook首次使用Captchas进行注册。

6 个答案:

答案 0 :(得分:9)

Facebook使用某种隐藏的垃圾邮件防护,如果您查看注册表单的来源,您会看到以下内容:

class="hidden_elem"><div class="fsl fwb">Security Check</div>This is a standard security test that we use to prevent spammers from creating fake accounts and spamming users.

因此,当javascript认为您是机器人时,捕获变得可见。

在没有捕获的情况下,很少有方法可以让机器人更难完成注册 喜欢填写表格的时间,鼠标点击事件的发起者等。 也是基于随机会话的形式价值(直接提交直接提交而不先下载表格)

也有些人使用隐藏的表单元素和常见名称,如'email',在css中设置为不可见,但常见的简单机器人会尝试填写所有表单字段,因此如果此隐藏元素具有任何值,则可以阻止它们

twitter和fb花费大量时间开发tecniques以阻止垃圾邮件发送者,我认为他们不会将其公之于众,因为它们对抗垃圾邮件发送者会产生反作用。

但是你可以从fb或twitter下载所有客户端javascripts并根据需要研究它们,因为大部分保护将在客户端而不是服务器上进行。

服务器只能发出一些随机会话变量,检查请求中的有效标头,总体时间等,它真的有限。

在用户填写表单期间,一些站点也在服务器和客户端之间使用ajax交换,这主要是为了让bot开发人员更难以进行类似的虚假数据交换。

无论如何,不​​幸的是,在没有简单解决方案的情况下进行体面的保护,特别是没有验证码或某种问题

也 对于提交按钮,您可以使用图像映射而不是按钮, 您可以使用PHP中的GDI和使用css通过执行按钮仅显示该图像的一部分,并使用css在随机位置上绘制提交的botton图像来动态创建大图像,并在服务器端检查鼠标所在位置的X和Y位置点击了,机器人很难打破。 除非他们使用真正的浏览器,只是模仿键盘和鼠标。无论如何,正如我所说,不幸的是,哪里不容易解决。

答案 1 :(得分:3)

一种方法是将验证发送到用户的电子邮件地址或手机并获取验证(因此,在这种情况下,您只需要允许每个帐户使用一个电子邮件地址或手机)

另一种选择是使用“Negative CAPTCHA”或“Honeypot Captcha

答案 2 :(得分:1)

我不知道Facebook和Twitter是如何做到这一点的,但是如果你想创造简单的东西并且不会干扰你的网站美学,我知道有些网站只是要求用户输入一个简单的答案像“什么是2 + 3?”这样的数学问题。这不是最安全的方式,但这只是一个想法。

答案 3 :(得分:1)

您也可以随时部署硬件解决方案来创建4-7层防火墙规则。您可以创建特定规则来查找众所周知的机器人抓取Web代理。但是,要停止新创建的机器人,您需要知道它们用于机器人的代理程序。

答案 4 :(得分:0)

由于您不想要CAPTCHA,您可以使用Keypic - keypic.com - 这是一种无形的保护,不需要CAPTCHA。它是任何网络表单的有效反垃圾邮件方法。网站用户不会通过任何对网站有益的测试,因为它可以提高用户体验的质量,从而提高用户参与度。该解决方案是一种专家系统,它分析用户的行为并检查数据库,然后在请求来自合法用户或机器人时得出结论。 BTW,Twitter和Facebook仍然使用CAPTCHA进行密码验证,这在保护效率方面是一个非常有争议的方法。

答案 5 :(得分:-1)

我遇到了大量机器人注册我的任天堂网站的问题所以我在注册页面上放了一张Mario图片(确保图像数据中没有任何内容表示&#34; Mario&#34;)文字&#34;这是谁?用一个词回答。&#34;从那以后,Haven就没有一次机器人注册了。不确定这是否真的是一个很好的解决方案,不知道智能机器人是多么聪明。我很惊讶它有效。

理论上它可能会阻止一些合法用户,但很难想象任天堂网站的许多合法用户不知道Mario是谁......