rails – 选择captcha插件

Rails中有很多validation码插件,还有许多类型的防止垃圾邮件和泛滥的解决方案。 所以这不仅是Rails的问题。

我们来看看我们有哪些类型的插件:

1.经典图像validation码 ( zendesk的Captcha ,Simple_captcha,Validates_captcha, winton的Captcha ,Raptcha)。

正:

  • 可以有效防止自动解密(不确定Simple_captcha,但似乎zendesk和winton的validation码都没有实现,因为他们使用预先生成的图像(而不是按需),所以我们可能的垃圾邮件机器人可以在那些图像上学到了)。

负:

  • 需要DB表(至少是简单的Captcha。不是很糟糕,但在使用后是否要清理它?)。
  • 需要RMagick或类似(对我来说不是那么实际,因为我已经在我的网站上有它)。
  • 失败手动解密(我知道2美元/ 1000张图片)。
  • 对用户来说很烦人,可能会伤害转换率。

2. ReCaptcha (Recaptcha,Rack-recaptcha)。

正:

  • 可以有效防止自动解密。
  • 不要求Rmagick和DB表。

负:

  • 向第三方网站拨打api电话。
  • 失败手动解密。
  • 比以前更烦人。

3.蜜jar (Negative-captcha,Trap_door,Reverse_captcha,Honeypot-captcha,Bouncy_bots, invisible_captcha )。

正:

  • 用户不知道validation码的存在。
  • 不要求Rmagick和DB表。

负:

  • 可能无法自动解密(有没有可以识别此插件的机器人?)。
  • 失败手动解密。

4.文本库 (Humanizer,Brain_buster,Gotcha)。

正:

  • 不需要Rmagick和DB表(Brain_buster除外)。

负:

  • 可能无法自动解密。
  • 失败手动解密。
  • 有点烦人(可以本地化)。

5.其他 (Acts_as_snook)

正:

  • 用户不知道validation码的存在。
  • 不要求Rmagick和DB表。

负:

不知道有没有,因为它很不寻常。 但我认为这可能会导致水浸问题,因为它可能需要在某些时候进行调节。

6.类似Akismet的解决方案 (不知道它们的效率)。

正:

  • 用户不知道validation码的存在。
  • 不要求Rmagick和DB表。

负:

  • 向第三方网站拨打api电话。
  • 将用户的详细信息提供给第三方网站(非常非常糟糕)。

我也应该对我的网站说几句话。 用户只有在ajax请求之后才会看到受保护的表单(例如,在将某些内容放入购物车之后)。 现代机器人是否有能力执行ajax请求和存储cookie?

泛滥是垃圾邮件的另一个问题。 您绝对应该将速率限制的逻辑构建到您的应用程序中,您可以使用validation来检查用户是否在过去15分钟内没有放置超过2个订单。

关于validation码,您选择的任何插件最有可能都很棒。 我不认为必须安装RMagick作为正面或负面,它真的不是很难工作。 如果是我选择的话,我的第一直觉就是重新开始,这对他们来说是最不讨厌的。

垃圾邮件是另一个问题,它通常由可以绕过validation码的人类用户输入。 Akismet非常适合捕捉垃圾邮件,绝对可以看一下它,你可以将它与recaptcha结合使用。

最后,现代机器人非常复杂。 比我们任何人想象的要复杂得多。 它们可以完全自动化浏览器,使用OCR读取validation码文本并生成垃圾内容,甚至可以绕过最复杂的filter。 也就是说,这不是关于“阻止所有垃圾邮件/机器人”,而是关于使进入门槛足够高,以至于对于临时用户来说这是不值得的。

很好地分析了现有的插件。

现代机器人非常复杂,他们的开发人员付出了很多,所以他们总是试图绕过最新的防御。 出于这个原因,我认为坚持使用积极维护和工作的选项是很好的,比如ReCaptcha。 我还认为用户了解界面并且知道您正在采取措施保护他们的数据时感到安全。

我不得不筛选项目的所有rails captcha选项,并为我的客户编写了一个示例应用程序来测试和试用。 simple-captcha-demo.heroku.com

它们都非常易于使用和设置,我喜欢使用heroku作为测试床来快速设置,并让客户测试它。 我还在我的博客RailsPerformance.com上写了一些我的经验和陷阱

可能有新的插件,它总是很好看到www.ruby-toolbox.com上的趋势