复选框验证码

时间:2012-02-11 02:58:23

标签: javascript forms checkbox captcha

我正在开始我的第一次启动。我无法忍受在注册网站时尝试阅读验证码,不希望我的用户访问。我找了替代品,然后找到了checkbox captcha。如何使用JavaScript加载复选框,并使用与通常用于制作注册表单相同的代码验证它?

感谢。

1 个答案:

答案 0 :(得分:4)

我查看了您发布的文章中链接的示例。乍一看,似乎可以很容易地绕过它。

复选框验证码的工作原理是垃圾邮件机器人不会解析或使用嵌入在网页中的JavaScript代码。因此,他们不会在搜索的表单中找到captcha复选框元素,因此不会为复选框和表单发送post值,如果复选框值,则在服务器端拒绝表单没发送。

问题在于:

  • 复选框名称始终相同(gasp_checkbox
  • 机器人很容易被“训练”以检测您网页上的这个javascript并采取相应的行动
  • 即使您输出了必须用于复选框的随机名称和值,仍然可以检测到它

这3个问题的结果意味着这比图像验证码或其他方法更容易破解。所有机器人在提交表单时都必须添加:gasp_checkbox=on到他们的HTTP请求。

也就是说,如果您在自己的网站上为自己实现这一点,那么任何机器人都不可能通过它,因为它的使用并不普遍。

您可以通过执行以下操作使其更安全:

  • 为服务器端的复选框生成唯一的名称/值对,并将这些值以模糊的javascript输出到客户端
  • 将脚本从表单中提取出来,最好是在脚本生成的外部javascript文件中。
  • 验证为复选框发送的值是否与先前生成但之前未使用的对匹配。

如果你做那些事情,我想你可以有一个有效的复选框验证码。如果有人确实在你的网站上发现它,即使采用上述保障措施,也可能会失败,但这可能需要一段时间,而且大部分时间仍对你有效。