WordPress 联系表单:安全检查清单
Contact Form 7、WPForms、Gravity Forms、Ninja Forms 或 Fluent Forms——插件选择不如配置和维护方式重要。本文说明应检查什么,以及每次更新后重新检查什么。
多数 WordPress 网站使用少数几种表单插件之一:Contact Form 7、WPForms、Gravity Forms、Ninja Forms、Fluent Forms 等。任何一种都可安全运行,也可能门户大开。差别通常不在插件本身,而在设置、周边附加组件、邮件如何离开服务器,以及到达后如何处理消息。
- 保持表单插件及所有附加组件最新,删除不再使用的组件。
- 启用插件自身的反垃圾信息选项——蜜罐、CAPTCHA 集成、适用时的 Akismet——并确认真正有效。
- 通过已验证身份的 SMTP,使用自有域名地址发送通知。
- 限制上传类型和大小,并避免上传文件被公开列出或浏览。
- 不在页面及源代码中暴露收件人电子邮件地址。
- 仅存储需要的条目,且仅保留必要时间。
- 每次更新 WordPress、主题或任何插件后,运行简短检查。
更新:表单插件及其周边组件
表单插件接受互联网上任何人的输入,因此是热门攻击目标。安全修复通常作为普通更新发布,因此应及时更新——不仅是主插件。支付、上传、CRM 连接、条件逻辑或额外 CAPTCHA 提供商的附加组件,是有自身漏洞的独立代码。曾为测试安装后遗忘的插件也一样。停用不够:停用插件仍在服务器上,其文件在某些情况下可被直接访问。不使用就删除。
反垃圾信息:开启后,证明它有效
多数表单插件有自身反垃圾信息选项,或集成外部服务:机器人会填写、真人看不到的蜜罐字段,reCAPTCHA、hCaptcha 或 Cloudflare Turnstile 等 CAPTCHA,以及对照垃圾信息数据库检查消息内容的 Akismet。选项随插件和版本变化,因此应检查设置,而非想当然。外部 CAPTCHA 加载第三方脚本,Akismet 将提交内容发送至外部服务——两者都应写入隐私政策,并视配置纳入同意管理。
更常见的问题是防护已开启却无效。使用公开测试密钥的 CAPTCHA 放行一切。脚本被缓存或优化插件、或 JavaScript 错误阻止的小组件,无法阻止任何东西。没有隐藏样式的蜜罐字段会被屏幕阅读器读出,也被真实访客填写。因此每次变更后,应在隐私窗口打开表单、检查浏览器控制台和页面源代码,并发送测试消息。如果希望防护不依赖 Google,免费的 formexposed WordPress 插件会添加蜜罐、时间检查和工作量证明,并在插件更新后重新检查网站——这是多种选择之一。
邮件:如何发送,去往何处
默认情况下,WordPress 将邮件交给服务器的 PHP mail 函数,许多主机上的此类邮件身份验证不足,最后进入垃圾箱,或静默消失。应改用 SMTP 插件或托管商邮件服务,使用带用户名和密码的真实邮箱,以及自有域名发件地址,例如专门的 forms@ 地址。域名 SPF、DKIM 和 DMARC 记录必须覆盖该发送方。不要把访客地址放在 From 字段:它不是您的域名,因此无法通过 DMARC 对齐,并会根据访客域名策略进入垃圾箱或被拒绝。将其设为 Reply-To,仍可一键回复。
收件人地址应放在插件设置,而非页面中。检查联系页面源代码:表单旁的 mailto 链接,或保存收件人地址的隐藏字段,会将地址交给每个采集机器人。旧版或自制表单可能更糟——如果服务器信任隐藏收件人字段,任何人都可修改并用您的表单向任意地址发送邮件。
上传与存储条目
文件上传是风险最高的表单功能,因此先问是否真的需要。如需要,仅允许实际预期的类型——例如 PDF 和常见图片格式——而非仅封禁少数危险类型,并设定大小上限。检查插件将上传文件存在哪里:不得在公开目录被列出,理想情况下连可猜测地址都无法访问。处理完后删除,或作为附件发送,而非留在服务器上。
许多表单插件或附加组件将每次提交保存在 WordPress 数据库,通常连垃圾信息也保存。邮件失败时这是有用备份,但也是不断增长的个人数据堆积。依 GDPR 存储限制原则(第 5(1)(e) 条),此类数据保留不应超过必要期限。决定是否需要存储条目、哪些字段以及多久,然后使用插件的自动删除设置(如有),或定期删除旧条目。数据库备份包含相同数据。
每次更新后
- 1在隐私窗口打开联系页面:表单和反垃圾信息元素正确显示,浏览器控制台无错误。
- 2查看页面源代码:蜜罐字段和 CAPTCHA 脚本仍在,收件人地址未暴露。
- 3发送测试消息:进入收件箱而非垃圾箱,邮件标头显示 SPF、DKIM 和 DMARC 通过。
- 4检查重要设置:收件人、发件地址、允许上传类型和大小、条目保留时间。
- 5确认表单处仍显示隐私政策链接及任何同意文本。
- 6记录日期和检查内容,以便知道最近何时有证据证明表单正常。
形成惯例后,这些操作耗时很少,却能发现原本数周无人察觉的静默故障。如需外部视角,formexposed.com 的免费检查会查看网站公开表单页面,不提交任何内容,并显示预期防护是否存在且配置有效——无需账户。