Rails 中有很多验证码插件,也有很多类型的防止垃圾邮件和泛滥的解决方案。所以这不仅仅是 Rails 的问题。
让我们看看我们有哪些类型的插件:
1. 经典图片验证码(zendesk 的验证码、Simple_captcha、Validates_captcha、winton 的验证码、Raptcha)。
积极的:
- 可以有效防止自动解密(不确定 Simple_captcha,但似乎 zendesk 和 winton 的验证码都没有实现这一点,因为它们使用预先生成的图像(而不是按需),所以我们可能的垃圾邮件机器人可以从那些图像上学到的)。
消极的:
- 需要数据库表(至少简单验证码。还不错,但他们在使用后会清理它吗?)。
- 需要 RMagick 或类似的(对我来说不是那么实际,因为我已经在我的网站上拥有它)。
- 手动解密失败(据我所知,2/1000 美元的图像)。
- 对用户来说很烦人,并且会损害转化率。
2.验证码(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 调用。
- 将用户的详细信息传送到第 3 方站点(非常非常糟糕)。
我还应该对我的网站说几句话。用户只能在 ajax 请求后看到受保护的表单(例如,在将某些东西放入购物车之后)。现代机器人是否有能力执行 ajax 请求和存储 cookie?