橙宝书
安全

Turnstile 与 WAF 安全基线

分清人机验证与请求过滤,建立必须服务端验证、规则从小范围开始的安全基线。

编辑与核验:橙宝书编辑团队 ·

SECURITY进阶22 分钟最后核验:2026-08-26

Turnstile 必须服务端验证

浏览器里的 Widget 成功不是授权证据。后端必须把 Token 提交到 Siteverify;Token 单次使用且会过期,不能缓存或复用。

两道不同的门

能力判断对象合适场景
Turnstile一次用户交互产生的 Token注册、登录、提交表单
WAF Custom Rule请求属性表达式已知恶意路径、来源或行为模式

WAF 规则由匹配表达式和动作组成,并按顺序执行。前面的 Block 等终止动作会让后续规则不再运行,因此顺序本身就是安全配置。

安全上线顺序

先保护后端动作

接收表单后,在服务端调用 Siteverify。缺 Token、验证失败、超时与重复 Token 都必须拒绝;不要只隐藏按钮。

WAF 从可解释条件开始

先用一个窄路径与明确条件;优先观察或 Managed Challenge,再根据证据决定 Block。免费套餐没有 Log 动作时,也不要因此直接扩大 Block 范围。

验证允许和拒绝

用正常请求确认没有误伤,再用安全测试请求确认规则确实触发。保存 Ray ID、规则 ID 与时间。

server-side pseudo flow
if (!token) return Response.json({ error: 'turnstile_required' }, { status: 400 });
const result = await verifyWithSiteverify(token, clientIp);
if (!result.success) return Response.json({ error: 'turnstile_failed' }, { status: 403 });
return performProtectedAction();

这里只展示控制流;真实实现的 Secret 必须来自 binding,错误响应不得回显 Siteverify Secret 或内部响应。

回滚边界

  • Turnstile 故障时,敏感写操作默认 fail closed,并提供人工支持路径。
  • WAF 误伤时只停用最近规则,不清空整套防护。
  • 变更前导出规则表达式和顺序,保留可恢复版本。

官方来源

这篇内容帮你完成目标了吗?

内测反馈只在当前浏览器生成,不会自动上传。

本页目录