安全性是关于平衡成本和风险,没有什么是不可战胜的,特别是不是典型的 CAPTCHA 实现,但它们确实增加了其他系统似乎无法提供的东西。
我一直在阅读这些 CAPTCHA 和可能的替代方案......(所以请不要将我推荐给其他网站/答案,除非他们真正回答了以下问题)。
我没有任何经验,所以对我来说很难估计与此决定相关的成本和风险:我应该使用 CAPTCHA(我正在考虑 JCaptcha 或 reCaptcha),还是其他技术的组合就足够了?
我有一个要填写的注册表单,但我不希望我的用户表被垃圾填满。蜜罐领域很容易实现,但是很容易绕过,简单的安全检查(天空是什么颜色?)可以很好地抵抗自动攻击,但是任何 15 岁的人都可以构建一个简单的针对性攻击,破坏我的用户表......用于检查填写表格所用时间的 javascript 是不安全的,并且在我的服务器上的简单帖子已损坏。基本上,除了典型的 CAPTCHA 之外,我没有发现任何与稍微聪明的目标攻击相比有效的东西,所以我不会被拖钓......所以真正的问题是,我是否有被定向攻击拖钓的巨大风险所以我宁愿将 10% 的用户丢给这些 CAPTCHA,或者是否有替代方案不会对用户征税?
编辑:非常感谢您的回答,它确实帮助我澄清了想法,特别是关于避免暴力攻击的 OWASP 链接(得到了我的 +1,但我不接受它,因为它感觉不像一个解决方案, 但它确实有助于找到一个。如果您认为我应该接受它,因为我发现它是迄今为止最好的答案,请评论说这样说,因为我可能会误解该网站的运作)。
另一方面,Asirra 非常有趣和简单,并且比传统的验证码要好得多,我当然会推荐它而不是其他服务。谜题更有趣,即使你失败了,你也只会失败一次……可惜:
Asirra 仍处于 beta 测试阶段;服务及其 API 可能都不稳定。
最终编辑:以防万一它有用,以下是我已采取的步骤,以确保用户不会受到验证码的困扰,但我对机器人感到安全。
- 蜜罐领域(很容易实现,虽然我觉得它不是很安全,但它没有花费我任何成本。)
- 电子邮件验证链接(或 OAuth 访问),因为我一直计划添加它。只有经过验证的用户会迁移到我的用户表,其余的保持注册状态。
- 时间检查:通过ajax加载签名的服务器时间戳,用户在发送(密码)之前需要至少5秒填写表格,否则将被丢弃。
- 注册后的确认页面(带有服务器签名的令牌,以确保请求首先通过服务器),警告用户需要确认电子邮件,并有一个发送确认电子邮件的按钮。(在这种情况下,数据也注册在 DB 上)
这不会阻止一个非常敬业的攻击者,但我希望他们不想花费数小时调整他的攻击而一无所获,只是打扰我。