有很多Rails的验证码插件,也有很多防止垃圾邮件和洪水攻击的解决方案。因此这不仅是Rails的问题。
让我们看看我们有哪些类型的插件:
1. 经典图像验证码(zendesk's Captcha,Simple_captcha,Validates_captcha,winton's Captcha,Raptcha)。
正面: - 可以有效地防止自动解密(不确定Simple_captcha,但似乎zendesk's和winton's captchas都没有做到这一点,因为它们使用预生成的图像(而不是按需生成),所以我们可能的垃圾邮件机器人可以在这些图像上进行学习)。
反面: - 需要DB表格(至少Simple Captcha需要。不太糟糕,但使用后会清理吗?)。 - 需要RMagick或类似工具(对我来说不太实际,因为我已经在我的网站上用过了)。 - 手动解密失败($2/1000张图片,据我所知)。 - 对用户很烦人,可能会影响转化率。
2. ReCaptcha(Recaptcha,Rack-recaptcha)。
正面: - 可以有效地防止自动解密。 - 不需要Rmagick和DB表格。
反面:
让我们看看我们有哪些类型的插件:
1. 经典图像验证码(zendesk's Captcha,Simple_captcha,Validates_captcha,winton's Captcha,Raptcha)。
正面: - 可以有效地防止自动解密(不确定Simple_captcha,但似乎zendesk's和winton's captchas都没有做到这一点,因为它们使用预生成的图像(而不是按需生成),所以我们可能的垃圾邮件机器人可以在这些图像上进行学习)。
反面: - 需要DB表格(至少Simple Captcha需要。不太糟糕,但使用后会清理吗?)。 - 需要RMagick或类似工具(对我来说不太实际,因为我已经在我的网站上用过了)。 - 手动解密失败($2/1000张图片,据我所知)。 - 对用户很烦人,可能会影响转化率。
2. ReCaptcha(Recaptcha,Rack-recaptcha)。
正面: - 可以有效地防止自动解密。 - 不需要Rmagick和DB表格。
反面:
- 调用第三方网站的API。
- 手动解密失败。
- 比以前更烦人。
3. 蜜罐(负面验证码,陷阱门,反向验证码,蜜罐验证码,弹跳机器人,隐形验证码)。
优点:
- 用户不知道验证码的存在。
- 不需要Rmagick和DB表。
缺点:
- 可能会自动解密失败(是否有任何机器人可以识别这些插件?)。
- 手动解密失败。
4. 文本型(Humanizer,Brain_buster,Gotcha)。
优点:
- 不需要Rmagick和DB表(除了Brain_buster)。
缺点:
- 可能会自动解密失败。
- 手动解密失败。
- 有点烦人(可本地化)。
5. 其他(Acts_as_snook)
优点:
- 用户不知道验证码的存在。
- 不需要Rmagick和DB表。
缺点:
不确定是否有因为它很不寻常而引起的问题。但我认为在洪水泛滥的情况下可能会导致帖子需要审核。
6. 类似Akismet的解决方案(不知道它们的有效性)。
优点:
- 用户不知道验证码的存在。
- 不需要Rmagick和DB表。
缺点:
- 向第三方网站发出API调用。
- 将用户详细信息传递给第三方网站(非常糟糕)。
我还应该说几句关于我的网站。用户只有在ajax请求后(例如将某些内容添加到购物车后)才能看到受保护的表单。现代机器人是否具备进行ajax请求和存储cookie的能力?