Logo Site EngageLab Mark Colored Transparent文档
搜索

防止短信接口被盗用

短信发送接口一旦被未授权调用,或 API Key 泄露后被他人使用,会出现短信被大量发出、账户余额被快速消耗、通道信誉下降等问题。EngageLab SMS 可以限制发送侧的频率、用量和国家 / 地区范围,但无法替代你对密钥和业务发送入口的保护。

本文说明如何把平台能力与业务侧防护配合使用,降低接口被盗用的风险。

正确架构

EngageLab SMS API 只能由你的业务系统服务端调用,不能由浏览器、App 客户端或小程序直接请求。

业务系统服务端 → EngageLab SMS API(携带 API Key;页面触发的发送再传入 end_user_ip)
              
              业务系统服务端 → EngageLab SMS API(携带 API Key;页面触发的发送再传入 end_user_ip)

            
此代码块在浮窗中显示
  • dev_keydev_secret 只存放在服务端,不要写入前端代码、App 安装包、公开仓库或 CI 明文变量。
  • 不要把 SMS API 地址和密钥暴露给终端用户可直接访问的接口。
  • 建议为生产环境 API Key 配置调用方 IP 白名单,详见 API Key

两种 IP 不要混用

配置 / 参数 填写的是 挡住什么
API Key 的 IP 白名单 你的服务器出口 IP 陌生 IP 拿着 Key 直接调用 SMS API
发送请求中的 end_user_ip 终端用户的 IP 同一用户 IP 在短时间内反复触发发送

安全中心 启用「按 IP 地址」频控后,必须在 发送短信 请求中传入 end_user_ip,该限制才会生效。这里应传用户设备的公网 IP,而不是你服务器的 IP。服务端批量发送营销或通知短信时,如果没有终端用户 IP,按 IP 频控不会对该次请求生效,更应依赖 API Key 白名单和发送量限额。

平台侧防护

在 SMS 控制台完成以下配置,用于限制接口被盗用后的损失:

你要做的 在哪配置 作用
为 API Key 设置 IP 白名单、有效期,并确保可随时禁用 API Key 限制谁能调用接口,泄露后能立刻停用
开启同号码、同 IP 的发送频率限制 安全中心 拦截单号、单 IP 连打
在由页面触发的发送请求中传入 end_user_ip 发送短信 让按 IP 频控生效
设置日 / 月发送量预警值与限额值 安全中心 用量异常时告警或自动暂停
按国家 / 地区设置白名单或黑名单 安全中心 避免向非业务地区发送
发生紧急情况时一键暂停 SMS 通道 安全中心 正在被盗用时快速止损
配置余额不足告警 告警设置 费用异常时尽早发现

发送量预警或限额触发后如需收到通知,请先在 Webhook 中配置相应回调事件。

按模板类型加强防护

不同 模板类型 的被盗用方式不同,防护重点也不一样。

通知 / 营销模板

这类短信通常由服务端按业务事件或运营计划批量发送,主要风险是密钥泄露后被他人拿去群发。

  • 生产环境必须配置 API Key IP 白名单。
  • 为应用设置合理的日 / 月发送量限额,避免余额被一次性打光。
  • 定时或批量任务只在受控的服务端环境触发,不要把发送能力开放成无鉴权 HTTP 接口。

验证码模板

如果你使用验证码类型模板,由网站或 App 上的「获取短信」按钮触发发送,还需要在你自己的业务接口上做防护:

  • 发信前做人机验证(如图形验证码或 Turnstile / reCAPTCHA),并在服务端校验结果。
  • 同一手机号设置重发间隔(例如 60 秒),前端同步展示倒计时。
  • 按账号、设备、IP 分别限制分钟、小时、自然日的请求上限,失败请求也计入次数。
  • 「获取短信」必须带有登录态,或未登录场景下的有效会话,禁止无上下文的公开发送入口。

把错误码当作异常信号

发送短信 在校验或发送阶段可能返回以下与频率相关的错误。出现这些错误时,应减缓重试,并检查是否存在未授权调用或集中请求:

错误码 含义
3004 超出频率限制,同一模板、同一目标用户在限制窗口内无法再次下发
10006 超出频率限制

如果发送量已达安全中心限额,或你已执行紧急止损,后续请求会被拒绝。请先在安全中心确认当前状态,不要立即连续重试。

密钥泄露时怎么做

  1. 在 SMS 控制台 禁用或轮换 API Key
  2. 安全中心 使用紧急止损,暂停短信发送。
  3. 消息明细 和回调中核对异常发送。
  4. 查看 告警设置 是否已触发余额告警,并核对近期消耗。
  5. 收紧 API Key IP 白名单,并检查日 / 月发送量限额是否合理。
  6. 确认风险消除后再恢复发送。

上线检查清单

  • API 只在服务端调用,dev_secret 未进入前端、App、公开仓库或 CI 明文变量。
  • 生产环境 API Key 已配置服务器出口 IP 白名单。
  • 安全中心已开启号码频控;由页面触发的发送已传入 end_user_ip
  • 已设置日 / 月发送量限额,并配置了用量相关回调和余额告警。
  • 验证码类发送在调用 EngageLab 前已做人机验证和业务频控。
  • 已明确被盗用时的处置顺序:禁用 Key → 紧急止损 → 核查发送记录。
Icon Solid Transparent White Qiyu
联系销售