最近维护的网站受到了58-59开头垃圾邮件的攻击,无一幸免,也不知道是什么原因,经过多重A/B测试,大胆推算一下是contact form 7(以下简称cf7)有漏洞被敌方掌握了。

垃圾邮件
频繁收到的垃圾邮件

不过好在contact form 7官方早就预留了验证码给我们,以防止这些垃圾邮件发送到我们的邮箱,那么接下来分享两种验证码方式。

1. cf7增加谷歌验证码reCAPTCHA

1.1 获取谷歌reCAPTCHA的API

登录谷歌验证码后台:点击前往

填写网站标签和名称即可获得两个密钥API。

谷歌验证码
填写获取谷歌验证码

点击确认之后我们就能看到下方的两个key,分别拷贝保存,接下来要用得上。

谷歌验证码密钥
拷贝谷歌验证码的两个key

1.2 contact form 7填入谷歌验证码key

登录Wordpress 后台找到Contact->Integration ,将上一步得到的两个key分别填入:

WordPress._How_to_add_captcha_to_Contact_Form_7
验证码加入contact form 7

保存之后我们打开已经创建的cf7表单,将recaptcha字段加入到发送按钮的上方:

谷歌验证码
cf7加入谷歌验证码

回到前台页面,在表单按钮上方看到I'm not a robot就大功告成了。

i'm not a robot

2. 使用cf7自带的验证字段

其实cf7的作者已经提供了一个验证字段的方法,需要按照插件来实现,Really Simple CAPTCHA

这款插件不用使用注入谷歌API,但是强度比谷歌的要弱一点,cf7作者在contact form 7.3.2版本的时候抛弃了这个用法,原因是“不能在触屏端很好的使用?”,也不是很清楚,手机端也是正常的,不过如果你是国内用户防止cf7垃圾邮件,不妨试一下这个插件,毕竟国内网站使用谷歌会拖慢很多速度的。

下载安装插件激活:

really-simple-captcha
really-simple-captcha,不过好久没更新了

因为作者取消这个插件的使用,所以在新版的cf7里面是没有这个字段的,需要自己手动加进去,代码如下:

I'm not a robot: [captchac captcha-1] [captchar captcha-1]

 

同样我们也是加到表单里面发送按钮的上方:

cf7自带验证字段
cf7自带验证字段

前台样式:

cf7自带字段
cf7自带字段前台样式

额外推荐

如果小伙伴想在wordpress登录注册(通常woocommerce商场建议使用)也加入谷歌验证码的话,可以使用 wp cerber 这个插件:

WP Cerber
WP Cerber- wp注册登录时增加谷歌验证码

激活主题后在wordpress后台找到 WP Cerber -> reCAPTCHA

wp cerber 谷歌验证码 (1)
wp cerber 谷歌验证码

可以增加注册、登录、忘记密码三个位置的验证码。

额外推荐 2

Contact Form 7 Image Captcha 是简单的图片验证,挺配合cf7的,效果如下:

Contact Form 7 Image Captcha效果图
Contact Form 7 Image Captcha效果图