feat: add HTTP signature tools and fix independent HTTP send validation
CSS quality / css-quality (push) Has been cancelled
CSS quality / css-quality (push) Has been cancelled
This commit is contained in:
@@ -495,8 +495,8 @@ Content-Type: application/problem+json; charset=utf-8
|
||||
|
||||
| 参数 | 类型 | 必填 | 默认值 / 说明 |
|
||||
| ------------ | ------ | ---- | ------------------------------------------------- |
|
||||
| mobile | string | 否 | 精确匹配回复者手机号 |
|
||||
| accessNumber | string | 否 | 精确匹配短信接入号,对应返回字段 destId |
|
||||
| mobile | string | 否 | 1 开头的 11 位手机号,精确匹配 |
|
||||
| accessNumber | string | 否 | 1–21 位数字接入号,精确匹配 destId |
|
||||
| keyword | string | 否 | 筛选正文包含指定关键词的回复 |
|
||||
| limit | 正整数 | 否 | 默认 50;按应用最大分页配置裁剪,系统默认上限 100 |
|
||||
| cursor | string | 否 | 首次不传;下一页使用上一响应的 nextCursor |
|
||||
|
||||
@@ -2312,3 +2312,8 @@ Webhook需在当前受支持Node运行时通过真实HTTPS投递;SSRF校验后
|
||||
## 2026-09-15 HTTP 客户手册与签名简化
|
||||
|
||||
按用户确认的 B6 手册实施,原2.4移为1.4。POST直接签原始UTF-8正文,GET四项LF分隔且末尾无LF;不兼容尝试旧摘要签名。保持凭据、权限、时间窗、nonce去重、内部发送幂等及Webhook规则。公开页、客户端独立文档页与MD下载共用权威手册,Node示例和完整HTTP报文按新规则验证。新规则替代此前三步正文摘要签名需求,适用本次代码版本;仅授权测试部署,预生产不变。设计及兼容影响见[HTTP整改方案](http-api-assessment-20260910.md)的2026-09-15章节。
|
||||
|
||||
|
||||
## 2026-09-15 HTTP调试工具与合并整改
|
||||
|
||||
继续前述新签名规则,客户端与运营端新增HTTP签名计算页:输入方法、路径、秒时间戳、nonce、AccessSecret和POST原始正文,本地生成HMAC-SHA256并复制,不上传/存储密钥、不发短信。修改输入使旧结果失效。运营端签名与引流报备统一三运营商列组件;客户端企业认证仅隐藏新申请入口,保留状态/进度。HTTP发送按独立HTTP总开关/发送能力校验,不能依赖CMPP开关。上行手机号过滤须1开头11位,接入号1–21位数字,非法返回400。设计及真实验收边界见http-api-assessment-20260910.md的2026-09-15补充。
|
||||
|
||||
@@ -317,3 +317,22 @@ HTTP-FULL-B02:去除URL IPv6方括号后区分IP字面量与DNS,DNS失败转
|
||||
- 时间戳窗口、nonce Redis 原子去重、租户/应用隔离、白名单、QPS 和日志脱敏保持。发送幂等使用的内部 bodyHash 保持,已有请求快照/计费/消息/队列均不迁移、不补投。Webhook 验签不变。
|
||||
- 数据模型、基础设施配置和 Gateway 无改动。历史查询 startTime/endTime 能力保留;手册简化介绍不代表删除后台兼容参数。
|
||||
- 验收:固定 POST/GET 向量、旧签名拒绝、末尾 LF/CRLF/字面反斜杠/正文空格与字段顺序篡改、缺失 rawBody、非空 GET、重放、权限与隔离;真实 HTTP/PG/Redis 验证以隔离数据和无发送请求完成,线上不创建短信或更改客户配置。两段 Node 示例从权威文档提取运行并与全部 HTTP 报文复算;公开页面三尺寸、目录/检索/下载及客户端共享入口验收。按精确提交标准 validate/preflight/prepare/deploy/verify。
|
||||
|
||||
|
||||
## 2026-09-15 接口签名工具与完整链路复验(实施前设计)
|
||||
|
||||
本轮继续18ecf80的新签名规则,暂停旧候选发布,四项完成后统一测试部署。两端新增独立HTTP签名计算页,复用同一实现和既有登录边界。输入方法GET/POST、请求路径(不含query)、秒时间戳、nonce、AccessSecret及原始JSON正文;浏览器本地HMAC-SHA256计算,不调用后台计算接口,不存储秘密,不自动发送请求。支持HTTP测试站点,使用独立小型HMAC库,不依赖仅安全上下文可用的crypto.subtle。显示签名原文、UTF8字节数与签名,支持复制和清空;修改任一输入立即使旧结果失效。GET无正文及末尾LF;POST保留空白、换行和原始文本,不重新序列化。提供更新时间戳/nonce操作及明确失败提示。页面路由/client/http-signature、/admin/http-signature,菜单分别在短信基础配置和客户管理。无数据库迁移、无新增服务端权限/API。
|
||||
|
||||
运营端签名和引流报备弹窗统一使用同一三运营商列组件,保留通道、独立状态、原因、历史继承及失败反馈。当前源码已具有三列结构,先核对真实页面和部署资源;不将用户反馈直接认定为数据模型缺陷。客户端只隐藏新申请/重新申请企业认证按钮,审核进度与现有资料仍可查看,后台认证能力保留。
|
||||
|
||||
授权测试仅专用企业/应用、模拟通道和号码,必要配置限专用对象;覆盖四公开接口的缺失/类型/长度/时间/签名/nonce/权限/租户/幂等/分页错误,以及发送后的黑名单、验证码、频次、模板、签名和引流报备拦截。少量串行发送,核对真实PG、Redis、Gateway、回执、Webhook和计费;任何意外真实通道或持续积压立即停止。复用9月14日矩阵但按新规则重新执行,不沿用旧通过结论。验收后停用新测试应用/凭据并保留证据。用户已授权本轮代码提交、推送及测试部署;预生产不在范围。
|
||||
|
||||
|
||||
### HTTP-0915-B01 上行查询号码格式校验
|
||||
|
||||
测试4665079真实API返回mobile=abc/1及accessNumber=<script>的200空集;补手机号1开头11位、接入号1至21位数字校验,非法400,复用MOBILE_INVALID/PARAMETER_INVALID。仅约束明确提供的过滤条件,省略不筛选,合法值继续精确匹配;无数据迁移和查询范围变化。
|
||||
|
||||
|
||||
### HTTP-0915-B02 HTTP发送误依赖CMPP开关
|
||||
|
||||
真实测试企业HTTP enabled/sendEnabled=true、CMPP interfaceEnabled=false时,合法模板请求422,未创建短信。根因SendBatchEntryService.validateSendResources无条件读取interfaceEnabled,与需求HTTP客户接口第一版的独立开通矛盾。仅由内部HTTP_REQUEST_CONTEXT符号确认的HTTP请求传递httpRequest校验选项,再读取真实httpConfig.enabled/sendEnabled;普通客户端及CMPP路径保留原检查,企业认证、租户、应用状态及模板校验不变。没有数据库迁移和计费规则变化。须真实复验CMPP关闭HTTP送达、HTTP关闭拒绝及原CMPP拒绝回归。
|
||||
|
||||
@@ -5541,3 +5541,12 @@ CLIENT-0914-01~07 的模板样式/顺序、文档归属与检索、中文状
|
||||
| HTTP-SIGN-0915-05 | 同幂等键/同正文仍读取既有requires_review;改正文409冲突;无消息、批次或队列新增,不恢复未知发送。 |
|
||||
| HTTP-SIGN-0915-06 | 原2.4移到1.4并修正引用;MD下载与源一致,三尺寸目录/刷新/检索/空结果/复制正常,加粗标题成为具名示例;不执行示例请求。 |
|
||||
| HTTP-SIGN-0915-07 | 精确提交测试发布后核对真实文档及新签名查询;旧算法拒绝。账号/凭据缺失时不恢复或新建线上配置,明确未执行范围。 |
|
||||
|
||||
|
||||
## HTTP及页面合并整改(2026-09-15)
|
||||
|
||||
- HTTP-0915-UI01:两端登录内菜单进入签名工具,POST/GET与文档固定向量及真实API一致,GET末尾无LF、POST空白/中文保持;改参数清除旧结果,空/非法输入反馈,清空密钥,复制降级、刷新、路由切换及三尺寸。
|
||||
- HTTP-0915-UI02:签名/引流报备三列同构、三网分别保存并刷新回读、空目标/失败不假成功;认证未认证/驳回无申请按钮,审核中保留进度。
|
||||
- HTTP-0915-B01:上行mobile=abc/1/空/超长,accessNumber=非数字/空/22位返回400;合法11位手机号和1–21位接入号精确匹配。
|
||||
- HTTP-0915-B02:仅HTTP开通、CMPP关闭时合法请求正常送达;HTTP总开关或sendEnabled关闭仍拒绝,客户端/CMPP原关闭检查保留;外部sourceType不能模拟内部HTTP上下文。
|
||||
- HTTP-0915-E2E:四公开接口鉴权/nonce/过期/签名篡改/参数类型及边界/幂等/重复/隔离/分页;专用模拟通道正常与失败回执、黑名单/号码频次/模板/签名/引流/敏感词拦截,核对真实PG、Redis、Gateway、Webhook签名/成功/重试/终止及扣退费;测试后排空并停用本轮对象。每项执行结论写进度和证据矩阵,不把旧版本通过当新版本通过。
|
||||
|
||||
@@ -5029,3 +5029,16 @@ HTTP-FULL-B02:去除URL IPv6方括号后区分IP字面量与DNS,DNS失败转
|
||||
定向31项、初轮API全量75套817项及构建通过。独立本地PG16424/cmpp_qa_http_signature(104迁移)、Redis16425、真实Nest16426验收16组通过,包含查询、隔离、篡改、旧算法、重放、幂等及MD下载,短信/批次数均0。仅安全辅助日志隔离为空实现,不将日志持久化标为验收。未启动发送或回调Worker;Redis5.0.14提示建议6.2+,实际nonce命令通过。样本初轮漏carriers、参数错误码断言与真实DTO不一致、幂等样本漏credentialId,修正并保留失败日志;不视为业务缺陷。另一本地PG16安装缺dict_snowball,使用既有完整pgsql安装启动本轮隔离实例。
|
||||
|
||||
CUA本轮可用,实际后端文档三尺寸1600×1000/1366×768/390×844无页面横向溢出;1.4/2.2/2.3顺序、36个具名示例、目录跳转、复制、刷新、错误码检索和空结果通过,控制台无warn/error。当前仅本地页面,线上验收另记。证据目录.local-data/http-signature-20260915;最终精确候选门禁/提交/推送/发布后补。无预生产或业务配置修改、无短信发送。
|
||||
|
||||
|
||||
## 2026-09-15 HTTP改造与追加四项合并实施(进行中)
|
||||
|
||||
前一接口协议提交18ecf8045f488af349812938d513753aa25ec237已推送;用户暂停发布时原计划仅preflight成功,prepare停在密码提示,已停止本轮终端,测试保持4665079。后续四项与此前协议一并交付,不取消前述改造。main/远端18ecf80、暂存空;已有metrics、tools/release及文档保护。
|
||||
|
||||
本轮统一签名/引流三网列组件、隐藏认证申请入口,新增两端共用浏览器签名页;@noble/hashes小模块用于HTTP站点本地计算,不上传秘密。33文件158前端测试、类型/生产构建、lint/style/CSS15门禁通过;组件测试曾标签/断言匹配失败,修正后全量通过,保留初始日志。生产构建浏览器POST/GET文档向量、复制、清空、1600/1366/390尺寸通过;Vite dev导航超时,使用同源码production验收入口。完整在线登录页另验。
|
||||
|
||||
真实测试旧版本72条参数请求发现上行号码过滤未校验(B01),HTTP独立应用被CMPP开关拒绝(B02),均已最小修复并补回归。首轮GET误用空字节摘要导致测试401,按旧协议应为{}摘要,修正后69/72通过,3条为B01真实缺陷;没有短信创建。一次正常发送因B02返回422,未创建短信。API上一轮75套825项通过,新增B02后全量及真实发布候选门禁待完成。
|
||||
|
||||
用户明确授权仅专用企业、应用、模拟通道及号码发送/回执/Webhook和必要测试配置。已新建HTTP隔离0915企业、2应用、3条远端loopback模拟通道、测试余额及对应流水;原客户/通道无修改。模拟器仅接受指定测试账号与号码、最多40个Submit,不连接运营商。当前准备上线新代码后完成真实链路复验及测试收尾。证据.local-data/http-complete-20260915。
|
||||
|
||||
用户要求安全复用sudo密码:已存当前Windows用户DPAPI加密文件(仓库外),不写明文;本机受保护未跟踪release.py仅新增test专用--sudo-credential及测试,47项工具测试含5项平台跳过。发现PowerShell7模块路径影响PowerShell5解密,调用时移除继承PSModulePath后真实只读SSH通过。工具变更后新计划绑定新摘要,不复用旧preflight。工具仍未提交,不能以应用SHA冒充工具版本。后续发布/推送及完成证据另行追加;预生产不在范围。
|
||||
|
||||
Reference in New Issue
Block a user