
Turnstile组件返回的令牌需要由服务端调用验证接口核对,前端显示完成不是安全验收终点。秘密密钥必须留在服务端,并检查验证是否成功及返回条件是否符合本次业务请求。
把组件显示与业务放行分开
站点密钥用于前端集成,秘密密钥用于服务端校验,两者职责不同。查看WordPress表单插件是否真正支持并执行了服务端验证,而不只是通过HTML插入了一个好看的组件。只隐藏提交按钮不能阻止客户端绕过页面直接调用接口。
处理验证失败和网络异常
服务端应按官方Siteverify返回结果决定是否继续保存、发信或执行业务。令牌存在失效和重复使用限制,不能缓存一次成功结果来永久放行。验证接口不可达时的提示和重试策略,也应在实际业务容忍度下明确安排。

核对绑定条件与密钥范围
根据集成方式检查允许的主机名、动作等必要条件,避免把其他场景得到的令牌随意用于当前动作。密钥不放在页面源码、公共仓库或普通项目截图里。多个站点共用配置时,要确认域名管理与撤销影响,不能靠复制粘贴默认信任全部。
通过负向请求证明保护真实存在
受控测试中,不提供令牌、提交无效或过期令牌时应被拒绝;正常令牌通过后业务只执行一次。再检查键盘、手机与失败提示,避免安全组件让真实客户无法提交。观察服务端记录时要脱敏,不需要把令牌原文长期写入日志。
关键区别

站点密钥:前端加载组件;不是秘密凭据。
秘密密钥:服务端验证使用;不得放入页面源码。
完成标记:仅表示前端状态;仍需后端决定放行。
怎样确认处理到位
无效、缺失及失效令牌不会触发业务,合法客户可正常完成流程,密钥只在受控服务端保存且没有泄漏到公开输出。
容易误判的边界
验证码不是身份认证或权限系统,也不能替代表单字段、文件上传和Webhook签名等各自的服务端检查。
