rails - 选择验证码插件
Posted
技术标签:
【中文标题】rails - 选择验证码插件【英文标题】:rails - Choosing captcha plugin [closed] 【发布时间】:2011-07-15 23:45:24 【问题描述】:Rails 中有很多验证码插件,也有很多类型的用于防止垃圾邮件和泛滥的解决方案。所以这不仅仅是 Rails 的问题。
让我们看看我们有哪些类型的插件:
1.经典图片验证码(zendesk's Captcha、Simple_captcha、Validates_captcha、winton's Captcha、Raptcha)。
积极的:
可以有效防止自动解密(不确定 Simple_captcha,但似乎 zendesk 和 winton 的验证码都没有实现这一点,因为它们使用预先生成的图像(而不是按需),所以我们可能是垃圾邮件可以在这些图像上学习机器人)。否定:
需要数据库表(至少是简单验证码。还不错,但他们会在使用后清理它吗?)。 需要 RMagick 或类似的(对我来说不是很实际,因为我的网站上已经有)。 手动解密失败(据我所知,图像为 $2/1000)。 对用户来说很烦人,可能会影响转化率。2。 ReCaptcha(Recaptcha,Rack-recaptcha)。
积极的:
可以有效防止自动解密。 不需要 Rmagick 和 DB 表。否定:
对第 3 方站点进行 api 调用。 手动解密失败。 比以前更烦人。3.蜜罐(Negative-captcha、Trap_door、Reverse_captcha、Honeypot-captcha、Bouncy_bots、invisible_captcha)。
积极的:
用户不知道验证码存在。 不需要 Rmagick 和 DB 表。否定:
可能无法自动解密(是否有任何机器人可以识别此插件?)。 手动解密失败。4.基于文本的(Humanizer、Brain_buster、Gotcha)。
积极的:
不需要 Rmagick 和 DB 表(Brain_buster 除外)。否定:
可能无法自动解密。 手动解密失败。 有点烦人(可以本地化)。5.其他(Acts_as_snook)
积极的:
用户不知道验证码存在。 不需要 Rmagick 和 DB 表。否定:
不知道是否有,因为它非常不寻常。但我认为它可能会在洪水泛滥的情况下引起问题,因为它有时需要帖子的审核。
6.类似 Akismet 的解决方案(不知道它们的效率)。
积极的:
用户不知道验证码存在。 不需要 Rmagick 和 DB 表。否定:
对第 3 方站点进行 api 调用。 将用户的详细信息发送到第三方网站(非常非常糟糕)。我还应该对我的网站说几句话。用户只能在 ajax 请求后看到受保护的表单(例如,在将某些东西放入购物车之后)。现代机器人是否具有执行 ajax 请求和存储 cookie 的能力?
【问题讨论】:
我在 Heroku 上托管了一个 Rails 应用程序,我想将验证码用于用户注册表单。哪种解决方案在生产中可行?我不能在 Heroku 上运行 RMagick 对吧? 我使用了简单的逻辑来过滤垃圾邮件中的 Rails 表单,它在多个生产应用程序中运行良好。它就像蜜罐,但有点不同:) 最近我把这个插件移到 gem protected_form 中,检查一下。很高兴收到反馈。 【参考方案1】:泛滥是与垃圾邮件不同的问题。您绝对应该在您的应用程序中构建有关速率限制的逻辑,您可以使用验证来检查用户在过去 15 分钟内没有下过超过 2 个订单。
关于验证码,您选择的任何插件都很有可能会很棒。我不会认为必须将 RMagick 安装为正面或负面的,它真的不难开始工作。如果是我选择,我的第一直觉会选择 recaptcha,这是最不烦人的。
垃圾邮件是另一个问题,它通常由可以绕过您的验证码的人类用户输入。 Akismet 非常适合捕获垃圾邮件,一定要看看它,你可以将它与 recaptcha 之类的东西结合使用。
最后,现代机器人非常复杂。远比我们任何人预期的要复杂得多。他们可以完全自动化浏览器,使用 OCR 读取验证码文本并生成垃圾内容,甚至可以绕过最复杂的过滤器。也就是说,这并不是要“阻止所有垃圾邮件/机器人”,而是要让进入门槛足够高,以至于对于普通用户来说不值得。
【讨论】:
好吧,我还将使用其中一个插件进行用户注册(没有电子邮件通知)。所以我只能看用户的IP来防止泛滥。但正如今天所见,有许多僵尸网络在这样做。所以 IP 屏蔽是个坏主意,不是吗? 用户 IP 发生变化,或者他们可能拥有工作和家庭计算机。 我的意思是阻止 IP,而不是为特定用户保存它。 IP 可以被阻止一段时间,例如 1 小时。【参考方案2】:对现有插件的良好分析。
现代机器人非常复杂,他们的开发人员收入很高,所以他们总是试图绕过最新的防御。出于这个原因,我认为坚持使用积极维护和工作的选项是件好事,比如 ReCaptcha。我还认为,用户了解界面并知道您正在采取措施保护他们的数据感到安全。
我必须筛选项目的所有 Rails 验证码选项,并编写了一个示例应用程序供我的客户测试和试用。 simple-captcha-demo.heroku.com
它们都非常易于使用和设置,我喜欢使用 heroku 作为测试平台来快速设置某些东西,并让客户对其进行测试。 我还在我的博客RailsPerformance.com 上写了一些我的经验和陷阱
可能会有新的插件,看看流行趋势总是好的 www.ruby-toolbox.com
【讨论】:
不错的演示页面!最顶部的 reCaptcha 链接已损坏,以防万一。 @clay 谢谢。我修复了那个断开的链接,并使它不会再次断开。以上是关于rails - 选择验证码插件的主要内容,如果未能解决你的问题,请参考以下文章