跳转到内容
搜索文档

快速入门

最后更新 查看 MarkdownAgent 设置

Turnstile 可以保护您的网站表单免受 bot 的侵害。它分两步运行:在访问者浏览器中运行质询以产生令牌 (token) 的 JavaScript 小组件,以及您的服务器向 Cloudflare 发送该令牌以确认其有效性的后端接口。本指南介绍了如何设置这两个步骤。

前提条件

在开始之前,您必须具备:

  • 一个 Cloudflare 账户
  • 一个需要保护的网站或 Web 应用程序
  • HTML 以及您首选的服务器端语言的基础知识

流程

Turnstile 小组件是嵌入在您网页上的 Turnstile 实例。每个小组件都有一个 sitekey(放置在 HTML 中的公开标识符)和一个 密匙 (secret key)(服务器用来验证令牌的私有凭证)。

每个小组件都有自己唯一的 sitekey 和 secret key 对,以及配置选项。

组件 描述
Sitekey 用于在您的网站上调用 Turnstile 小组件的公钥。
Secret key 用于服务器端令牌验证的私钥。
配置 模式、主机名、外观设置和其他选项。

实施 Turnstile 包含两个协同工作的基本部分:

  1. 客户端:嵌入小组件

    将 Turnstile 小组件添加到您的网页表单和应用程序中,以向访问者发起质询并生成令牌。令牌是访问者完成质询时生成的一个字符串(最多 2,048 个字符)。

  2. 服务器端:验证令牌

    将令牌发送到 Cloudflare 的 Siteverify API(验证 Turnstile 令牌的端点),以确认它们是真实且未被篡改的。

Turnstile 被设计为一项独立的服务。您可以在任何网站上使用 Turnstile,无论该网站是否通过 Cloudflare 网络进行代理。这允许跨多云环境、本地部署基础设施或使用其他 CDN 的站点进行灵活部署。客户端小组件和服务器端验证步骤完全是自包含的。

有关如何在网站上实施 Turnstile 的指导,请参阅下面的实施


实施

按照以下步骤实施 Turnstile。

1. 创建您的小组件

首先,您必须创建一个 Turnstile 小组件以获取您的 sitekey 和密匙。

选择您首选的实施方法:

Cloudflare 仪表板

API

Terraform

2. 嵌入小组件

将 Turnstile 小组件添加到您的网页表单和应用程序中。

请参阅嵌入小组件以详细了解隐式和显式渲染方法。

3. 验证令牌

实施服务器端验证以验证由您的小组件生成的令牌。

请参阅验证令牌以通过正确的令牌验证来保障您的实施安全。

其他实施选项

移动端配置

对于移动端应用程序和 WebView 实施,需要进行特殊的考虑。

有关移动端应用程序集成的更多信息,请参阅移动端实施

从其他 CAPTCHA 迁移

如果您目前正在使用 reCAPTCHA、hCaptcha 或其他 CAPTCHA 服务,Turnstile 可以进行直接替换。您可以直接在目前部署了现有脚本的位置复制并粘贴我们的脚本。

请参阅迁移以获取从其他 CAPTCHA 服务逐步迁移的指南。


安全要求

  • 必须进行服务器端验证。使用 Siteverify API 强制执行 Turnstile 令牌至关重要。Turnstile 令牌可能是无效的、已过期的或已被兑换的。如果不验证令牌,将在您的实现中留下重大安全漏洞。您必须调用 Siteverify 来完成您的 Turnstile 配置。否则,配置将是不完整的,并且在 Turnstile Analytics 中查看您的指标时,令牌验证结果将显示为零。

  • 令牌在 300 秒(5 分钟)后过期。每个令牌只能验证一次。过期或已使用的令牌必须替换为新的质询。


最佳实践

安全性

  • 保护您的密匙。切勿在客户端代码中公开密匙。
  • 定期轮换您的密钥。使用 API 或仪表板定期轮换密匙。
  • 限制您的域名。仅在您控制的域名上允许小组件运行。
  • 监控使用情况。使用分析来检测异常模式。

运营

  • 使用描述性名称。根据小组件的用途对其命名,例如“登录表单”或“联系页面”。
  • 区分您的环境。为开发、暂存 (staging) 和生产环境使用不同的小组件。
  • 跟踪在哪些位置使用了哪些小组件。
  • 在使用 Terraform 时,将您的小组件配置存储在版本控制中。

这篇文档对您有帮助吗?