SuperAPI AI 工具集

telegram-miniapps

安全与审计

查看项目

更新于 10-16 01:09

技能介绍

用途:构建或审计 Telegram Mini App(在 Telegram 内打开的网页)时的安全与实现参考。核心观点是:Mini App 的查询字符串是唯一身份凭证,由 bot token 签名,必须在服务端验证;SDK 解析出的对象仅供展示。

主要能力:

  1. initData 验证。HMAC 路径:secret = HMAC_SHA256(key="WebAppData", msg=bot_token),再对按 key 排序、以 \n 连接的 key=value 串(去掉 hash 与 signature)做 HMAC_SHA256 并做常量时间比较。第三方无 bot token 时用 Ed25519 路径,签名串前缀为 <bot_id>:WebAppData,测试与生产公钥不同。
  2. 常见缺陷防护:拒绝重复字段与不可解析数据;auth_date 需设新鲜度窗口(示例 MAX_AGE = 300 秒)并设上限;user 字段须保持原始字符串,不可重新序列化。
  3. 会话设计:initData 是登录而非会话,验证一次后签发自有短期 token,避免每次请求重验。
  4. 附带可运行脚本 fixtures/verify_initdata.py,仅用标准库,含九项检查(篡改 user id、过期 auth_date、重序列化 user、反向密钥派生等)。

使用方式:客户端发送 window.Telegram.WebApp.initData 原始字符串到后端,服务端验证后派生身份;不要使用 initDataUnsafe 做授权判断。回传结果用 sendData(键盘按钮打开)或 answerWebAppQuery(内联按钮,query_id 生命周期短);支付走 bot 的 Stars 流程。

适用场景:Mini App 登录鉴权、审计客户端信任问题、处理视口与主题适配(viewportHeight、safeAreaInset、themeParams 等,勿用 100vh)。

限制:资料未提供具体收费、价格或平台支持范围;SDK 包名为 @telegram-apps/sdk(3.11.8),旧组织模板部分已归档,选用需注意。