【发布时间】: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 中,检查一下。很高兴收到反馈。
标签: ruby-on-rails plugins captcha spam flooding