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 - 选择验证码插件的主要内容,如果未能解决你的问题,请参考以下文章

弹出层,验证码,省市地区选择,国际电话区号选择等插件的使用

node与验证码

完美验证码识别系统,验证码插件使用帮助文档

Django自定制插件之随机验证码

来一个朴素的验证码小插件

jquery图片验证码插件gVerify.js