WordPress 中文验证码

如何过滤垃圾评论是个人博客老生常谈的话题。一种比较简单的方案就是加上验证码,这不会为正常回帖的用户增加太多负担,但足以将一些刷评论的机器人拒之门外。对 WordPress 这种带后端的博客系统而言,验证码还可以增加暴力破解登录密码的成本,提高安全性。

在 WordPress 插件库中,有着各式各样的验证码插件。然而,很多验证码插件都依赖于 Google 的 reCAPTCHA,这在国内无法访问;而一些图片验证码插件的质量参差不齐,在机器学习快速发展的今天,实际效果难以得到保障。

虽然本站已经抛弃了 WordPress 转投 Hexo 静态博客(正如你所看到的这样),但考虑到 WordPress 中少有适合我国国情的验证码插件,笔者决定将一些常见的图形验证码的功能进行整合,推出一个更完美的验证码解决方案。Mimi Captcha 就这样诞生了,该插件最大的特点是,除了传统的数字、大小写字母验证码之外,还加入了对中文验证码和算术验证码的支持。

Mimi Captcha 是基于 Vinoj Cardoza 的 Captcha Code 在 GPL 协议下二次开发的。原项目存在的问题是,验证码中的字符采用同一字体在同一高度下顺序排列,这样非常容易被识别。改动过程中,加入了「超时时间」,以及对用户更为友好的「不区分大小写」选项。而验证码图片的生成算法,则进行了重构,很大程度上采用了流水孟春的方案,在原插件上拓展而成。同时,在 IP 白名单等功能上,参考了 Captcha by Simplywordpress 的实现。最终效果如图:

登录验证码

评论验证码
验证码设置

代码可以在 GitHub 上查看:Mimi Captcha,同时也发布在了 WordPress 插件库:Mimi Captcha
如果你对这个插件有任何建议或反馈 Bug,敬请在 GitHub 上提交 Issue。博客评论区留言可能无法及时回复。

顺便吐槽一下 WordPress 官方团队粗暴无礼的插件审核机制,真的是非常严格呢。(不过要确保插件安全可靠,严格一点也是必要的)
最后要说的是,没有绝对安全的系统。中文验证码只是提高了机器人发帖和破解密码的成本,而管理员保持良好的使用习惯、进行合理的维护才是确保 WordPress 安全运行的关键。


拓展阅读:
知识库:使用 Tesseract 识别弱验证码
【翻译】wordpress 在后台自定义菜单页面上实现 TAB 页