Verify

证明有人在,而不必让他证明。

在表单里放一个容器,并在服务器上确认令牌。多数访客只会看到一个对勾。

01

在页面中

<script src="https://verify.yunzheng.space/v1.js?v=1.3.0" async defer></script>

<form method="post" action="/login">
  <div class="orbit-verify" data-sitekey="ovk_…" data-action="login"></div>
  <button type="submit">Sign in</button>
</form>

脚本会渲染页面上每一个 .orbit-verify 容器,并向其所在表单注入名为 orbit-verify-response 的隐藏字段。site key 在控制台的 Verify 页面创建。

属性作用
data-sitekey必填。控制台生成的 key。
data-action标签,siteverify 会原样返回。用它区分登录与注册。
data-themeauto、light 或 dark。
data-sizenormal 或 compact。
data-langen 或 zh-CN。不设时跟随页面语言。
02

在你的服务器上

表单字段里的令牌在你确认之前没有任何价值。请在处理提交之前,在服务端确认一次。

const r = await fetch("https://verify.yunzheng.space/v1/siteverify", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    secret: process.env.ORBIT_VERIFY_SECRET,
    response: req.body["orbit-verify-response"],
    remoteip: req.ip,
  }),
});
const v = await r.json();
// { success, challenge_ts, hostname, action, score, "error-codes": [] }
if (!v.success) return res.status(400).send("verification failed");
除了 success,还要检查 hostnameaction。令牌只能证明有人通过了某次检查 —— 检查这两个字段,才把它绑定到你的站点上的这个表单。

一个令牌只能确认一次。对同一令牌的第二次确认会失败 —— 这正是阻止提交被重放的机制。

03

它不做什么

  • 不设 cookie、不用 iframe、不从第三方加载任何资源。
  • 不采集键入内容与指针坐标。
  • 访客地址从不明文存储。
  • 不做任何能让一个站点的访客在另一个站点被识别的事。
04

常见问题

访客需要点击吗?

通常不需要。检查自动完成并显示一个对勾。信号不佳时,小组件会变成一个复选框 —— 点一下即可,永远不会出现图片拼图。

没有 JavaScript 能用吗?

不能。检查在浏览器中运行,禁用脚本的访客无法完成。如果你必须服务这类访客,请为他们保留一条非表单路径。

继续

相关文档

开始使用

Orbit 账户的组织方式、控制台各处的功能,以及从登录到让我们的网络开始应答一个域名的最短路径。

DNS 托管

建区、把注册商的 NS 指向我们、管理记录。含加权应答、带健康检查的记录、顶点 ALIAS 与区文件导入。

接入主机名

整域委派、单主机名委派,或加一条 CNAME 而完全不动现有 DNS。三者各自的代价与适用场景。

← 全部文档