【问题标题】:Checkbox Captcha复选框验证码
【发布时间】:2012-03-03 11:50:18
【问题描述】:

我正在启动我的第一次创业。我无法忍受在注册网站时尝试阅读验证码,不希望我的用户这样做。我寻找替代品,我找到了checkbox captcha。这是如何完成的,使用 JavaScript 加载复选框,并使用通常用于制作注册表单的相同代码对其进行验证?

谢谢。

【问题讨论】:

    标签: javascript forms checkbox captcha


    【解决方案1】:

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

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

    这个问题是:

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

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

    也就是说,如果您在自己的网站上自行实现此功能,则任何机器人都不太可能通过它,因为它的使用并不广泛。

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

    • 为服务器端的复选框生成唯一的名称/值对,并将这些值以经过混淆的 javascript 格式输出到客户端
    • 在远离表单的地方提供脚本,最好在由脚本生成的外部 javascript 文件中。
    • 验证为复选框发送的值是否与之前生成且未使用过的一对匹配。

    如果你做这些事情,我认为你可以有一个有效的复选框验证码。如果有人确实在您的网站上发现了它,即使有上述保护措施,它可能仍然很容易被击败,但这可能需要一段时间,并且在大多数情况下对您仍然有效。

    【讨论】:

    • 再一次,通过默默无闻获得安全不是很糟糕吗? en.wikipedia.org/wiki/Security_through_obscurity, "敌人知道系统。"
    • 是的,我同意,但我想最坏的情况是您开始收到联系表单垃圾邮件或不需要的注册,因此您可以在一段时间内使用该解决方案,直到您的网站成为目标攻击,您必须更改为另一种解决方案。
    • 阅读此复选框 catcha 的“早期评论”很有趣 - 结果证明它做得很好 - 现在已经被 reCaptcha v3 提高了一个分数,它返回一个表示“可能性”的分数人性”(意译)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    • 2017-05-07
    相关资源
    最近更新 更多