阻止暴力猜测 和自动化 OTP 滥用。
保护注册、登录和升级验证流程,抵御暴力猜测验证码、自动重新发送循环和 SMS 流量欺诈,同时不给正常用户增加阻碍。Bird Verify 对存储的验证码进行哈希处理,强制执行每个会话的尝试次数限制和有效期,限制对同一收件人的重复发送,并允许你在消息发出前屏蔽不提供服务的国家/地区。
verify.ts
200 · pendingimport { 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, error } = await bird.verify.verifications.check({ to: { phone_number: "+15551234567" }, code: userInput, }).safe(); if (error) throw error;
您的账户
请确认是您本人。
请输入验证码,验证码已发送至
+1 ••• ••• 4567
verify.ts
200 · pendingimport { 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, error } = await bird.verify.verifications.check({ to: { phone_number: "+15551234567" }, code: userInput, }).safe(); if (error) throw error;
您的账户
请确认是您本人。
请输入验证码,验证码已发送至
+1 ••• ••• 4567
verify.ts
200 · pendingimport { 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, error } = await bird.verify.verifications.check({ to: { phone_number: "+15551234567" }, code: userInput, }).safe(); if (error) throw error;
您的账户
请确认是您本人。
请输入验证码,验证码已发送至
+1 ••• ••• 4567
无需自建请求速率限制器,即可锁定 OTP 流程。
自行保障验证安全,意味着要维护用于重新发送冷却的 Redis 计数器、跟踪每个会话的失败猜测、在写入数据库前对验证码进行哈希处理,并过滤发往你未开展业务国家/地区的流量。使用 Bird Verify API,这些防护措施会在每个验证会话中自动运行。明文验证码不会出现在 API 响应和应用日志中,校验端点强制执行有上限的尝试次数和每分钟请求速率限制,工作区设置则让你在双因素登录和无密码登录中调整有效期和允许的目的地。
Bird 如何保护验证会话免遭滥用。
默认防护措施和工作区控制,阻止验证码猜测、重新发送泛滥和不需要的国际流量。
- 01
生成不可预测的验证码。
默认生成 6 位数字验证码(也可按请求设为 4 到 8 位),使用加密随机源覆盖整个验证码空间,攻击者无法通过时间戳或顺序计数器预测验证码。
- 02
日志和响应中不出现明文验证码。
验证码以 HMAC-SHA256 哈希形式存储,并且不会出现在 API 响应、Webhook 载荷和控制台日志中,即使应用日志或支持视图泄露,也不会暴露有效验证码。
- 03
以恒定时间校验提交的验证码。
在会话的有效尝试中以恒定时间校验用户提交的数字,响应延迟不会向攻击者透露匹配了几位数字。
- 04
锁定暴力猜测,让过期会话失效。
默认每个会话最多 5 次校验尝试、有效期 10 分钟,也可在工作区设置中调整这两项限制。尝试次数用尽或计时结束后,会话即关闭并拒绝后续校验,同时还有每分钟校验限流作为保障。
- 05
限制重复发送,屏蔽不使用的国家/地区。
强制执行 60 秒重新发送冷却(最长可配置为 1 小时),并对每个收件人地址设置每小时最多 5 次的滚动发送上限,防止机器人轰炸用户手机或耗尽你的余额。在控制台中停用你不提供服务的国家/地区,即可在消息发出前阻止发往这些目的地的 SMS 流量欺诈。
引导真实用户纠正输入错误,同时锁定暴力猜测循环。
用户输错数字时,校验响应会告诉你的应用还剩几次尝试,方便你提示用户重试。会话的尝试次数用尽后,验证会自动关闭,并在新会话开始前阻止继续猜测。
const { data, error } = await bird.verify.verifications.check({
to: { phone_number: "+15551234567" },
code: guess,
}).safe();
if (error) throw error;
// wrong code, attempts left → { success: false, reason: "incorrect_code", attempts_remaining: 2 }
// budget spent, session done → { success: false, reason: "attempts_exhausted", attempts_remaining: null }即将推出:自动风险信号和支出上限。
除了现有的国家/地区控制和按收件人发送上限,我们正在将反欺诈层直接构建到验证生命周期中。由于它运行在相同的发送和校验端点上,你的团队只需修改配置即可启用风险规则,无需改动应用代码。
验证请求的风险信号。发起验证时传入设备、IP 和请求上下文,在消息发出并产生运营商费用前拦截高风险尝试。
号段频率上限和支出上限。将按国家/地区和按号段的发送限制与工作区验证上限相结合,在针对高价运营商号段的人为夸大流量(AIT)攻击耗尽你的预算前将其阻断。
基于投递历史的决策。根据 Bird Verify 跨渠道记录的尝试和转化历史为新验证请求评分,并通过你现有的状态处理程序直接呈现拦截结果。
基于 Verify 平台构建
多渠道投递、回退路由和身份验证流程,均基于同一个 API 构建。
规模扩展
不失控。
在工作区中组织团队,控制 API 访问权限,通过审计日志追踪变更。
组织
Harbor
访问权限仅限于其所在工作区。
生产环境/API 密钥
注册服务
活跃Alex Lee
管理员
今天 · UTC
审计日志
组织
Harbor
访问权限仅限于其所在工作区。
生产环境/API 密钥
注册服务
活跃Alex Lee
管理员
今天 · UTC
审计日志
组织
Harbor
访问权限仅限于其所在工作区。
生产环境/API 密钥
注册服务
活跃Alex Lee
管理员
今天 · UTC
审计日志