防滥用与验证码安全

预览中

验证码是一个秘密。 我们也如此对待它。

集成语言:
Cursor

一次性验证码的安全性取决于其生成、存储和速率限制方式。Bird Verify 使用加密随机源生成验证码,仅存储哈希值,采用恒定时间比较,并对发送次数和猜测次数设上限——因此,即使日志泄露或遭遇暴力破解,攻击者也无从得手。欺诈评分功能即将在此基础上推出。

verify.ts
200 · pending
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

// Send the code, then check it by recipient.
await bird.verify.verifications.create({
  to: { phone_number: "+15551234567" },
}).safe();

const { data } = await bird.verify.verifications.check({
  to:   { phone_number: "+15551234567" },
  code: userInput,
}).safe();

安全性默认启用,无需额外购买。

Bird Verify API 上的每次验证都具备相同的保护:验证码在服务端生成,永不返回明文,仅以哈希形式存储;比较采用恒定时间且受限于尝试次数预算;发送按接收者和工作空间设上限。这些无需您手动启用或配置——无论您将其用作双因素登录还是无密码登录,API 始终如此运行。

每次验证均具备五重保护。

无需设置步骤,无需额外购买。

  1. 01

    加密随机生成。

    验证码源自加密随机源,在整个码空间内均匀分布,而非可预测的计数器或时间戳。

  2. 02

    静态哈希存储,明文永不外传。

    仅存储每个验证码的 HMAC-SHA256 哈希值;明文永远不会通过 API 返回,也不会写入您的系统或我们的日志。

  3. 03

    恒定时间比较。

    提交的验证码采用恒定时间比较,攻击者无法从验证耗时中获取任何信息。

  4. 04

    尝试次数锁定。

    每个会话的验证次数有限(默认 5 次)。次数用完后会话即失败,暴力猜测无法无限进行。

  5. 05

    发送上限与配额。

    按接收者的发送上限、重发冷却时间以及按工作空间的每日配额,共同限制支出和攻击面,超限时返回 429 状态码及 Retry-After 头。

攻击者的尝试次数先于您的用户耗尽。

错误验证码会返回剩余尝试次数,预算耗尽后会话即失败——暴力破解撞上的是一堵墙,而非一扇敞开的门。

lockout.ts
200
const { data } = await bird.verify.verifications.check({
  to:   { phone_number: "+15551234567" },
  code: guess,
}).safe();

// wrong code, attempts left → { result: "invalid", attempts_remaining: 2 }
// budget spent, session done → { result: "failed", attempts_remaining: null }
即将推出

即将推出:欺诈信号与 SMS 泵送攻击防护。

Bird Verify 目前记录的每次发送历史,是我们正在构建的欺诈防护层的基础。它使用相同的 create 和 check 调用——因此后续启用只需更改配置,无需重新集成。

创建时的风险信号。在验证请求中传入设备、IP 和请求上下文,高风险尝试在发送验证码之前即被拦截——您无需为向攻击者发送消息买单。

SMS 泵送与 AIT 防护。按国家和号段前缀的发送上限,加上按工作空间的消费上限,可阻止人为虚增流量攻击——这种攻击将 OTP 发送至高费号段以获取运营商收入分成。

基于现有基础构建。风险决策读取 Bird Verify 从第一天起就保存的尝试历史,而拦截结果已是状态模型的一部分——因此欺诈防护层的上线不会改变您现有的集成方式。

验证安全常见问题

一次性验证码存储在哪里?+
仅以 HMAC-SHA256 哈希形式存储。Bird 使用加密随机源生成验证码并发送,仅保留哈希值用于比较——明文永远不会通过 API 返回或写入日志。
如何防止暴力破解验证码?+
每个会话的验证次数有限(默认 5 次),且每次比较均在恒定时间内完成,因此计时信息不会泄露任何线索。预算耗尽后会话即失败,攻击者无法持续猜测。
如何应对 SMS 泵送和人为虚增流量?+
目前通过按接收者的发送上限和按工作空间的每日配额来控制支出。专门的欺诈评分和 SMS 泵送防护即将推出,将基于 Bird Verify 已记录的每次发送历史构建。
这些保护措施需要额外付费吗?+
不需要。加密生成、哈希存储、恒定时间比较、尝试次数锁定和发送上限是每次验证的默认行为——无需购买安全等级。
我的用户看到验证码来自谁?+
Authifly,Bird 的验证品牌。它是用户收到的每个验证码上显示的身份:邮件来自 otp@verify.authifly.com 或您自己的已验证域名,SMS 和 WhatsApp 则以 Authifly 品牌呈现。authifly.com 是一个公开页面,向收件人确认 Authifly 代表企业发送合法的一次性验证码。Bird 是您构建应用的平台;Authifly 是收件人看到的身份。

验证码的生成、存储和速率限制,一切如其所应。

安全性内置于 Bird Verify,而非额外附加:渠道、验证码和限制规则,都通过同样的两个端点实现。

从一个渠道开始。
准备好后,再添加其他渠道。

测试 API 密钥即刻可用。添加支付方式并验证发送者身份后,即可解锁生产环境。

正在使用 Claude Code、Cursor 或 Codex?复制一条设置提示,您的智能代理即可自动安装 Bird CLI 和相关技能。选择您的工具:

Cursor