From 1b82fd177182016fbb290c5a72f91fd21854e3b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=8F=E7=8A=80=E9=BA=9F?= Date: Fri, 28 Aug 2026 00:29:59 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E7=99=BB=E5=BD=95=E4=BB=85=E5=AF=86?= =?UTF-8?q?=E7=A0=81=E5=8A=A0=E5=AF=86=E6=94=B9=E9=80=A0=EF=BC=88=E6=97=A5?= =?UTF-8?q?=E5=BF=97=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .workbuddy/memory/2026-08-27.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.workbuddy/memory/2026-08-27.md b/.workbuddy/memory/2026-08-27.md index d538240..c787677 100644 --- a/.workbuddy/memory/2026-08-27.md +++ b/.workbuddy/memory/2026-08-27.md @@ -34,3 +34,5 @@ - 2026-08-27 | FEAT | 登录密码「RSA+AES-GCM」混合加密传输(对称+非对称结合)双端完成并 E2E 验证 15 项全过:service 新增 internal/library/crypto(密钥三级来源、SPKI 公钥、ts 防重放、DecryptLogin/DecryptField)+ 公开接口 POST /system/auth/public-key + Login/AdminCreate/AdminResetPwd 密文支持(allowPlain 仅 dev);admin 新增 utils/crypto.ts(Web Crypto 零依赖)+ loginApi/getPublicKeyApi 加密 + createAdmin/resetAdminPassword 加密字段;数据库密码本就是 bcrypt 哈希。提交 service 0648477 / admin a1bddc3(push 仍待令牌)。⚠️坑:①公钥必须 SPKI(MarshalPKIXPublicKey),PKCS#1 致 ASN.1 wrong tag;②Node 模拟时 GCM tag 需 getAuthTag 单独取(WebCrypto/Go 密文已含 tag);③commitlint scope 须在允许列表(用 other/project)。 - 2026-08-27 | FEAT | 生产全量请求/响应加密(开发保持仅密码加密):service 新增 middleware/APICrypto(请求整体解密+响应用同一 AES 会话密钥加密回传,public-key 明文豁免,未加密请求拒绝)+ crypto 增 DecryptRequest/EncryptResponse/fullBody 开关;admin 新增 installCryptoInterceptors(请求整体加密、响应解密最先注册,requestClient+baseRequestClient 双生效),VITE_GLOB_API_ENCRYPT 控制(prod true/dev false);injectEnv 增 ENCRYPT_FULL_BODY/ENCRYPT_ALLOW_PLAIN。提交 service ebc507e / admin f8463e9。⚠️坑:①GF 的 r.GetBody() 缓存密文到 bodyContent 且 handler Parse 走缓存 → 中间件须 io.ReadAll(r.Request.Body);②GF_GCFG_ENV 仅 gf run CLI 认,直接跑二进制恒加载 config.yaml → 开关必须 env 注入;③Node 模拟响应解密需 setAuthTag 显式分离 tag(浏览器 WebCrypto 直接整体解密);④TS Uint8Array.subarray 返回 ArrayBufferLike 不满足 BufferSource 需拷贝。验证:dev 仅密码 15 项 + prod 全量 9 项 E2E 全过。 + +- 2026-08-27 | CHG | 登录接口改为「永远只加密密码字段」并从全量加密豁免:service APICrypto plainRoutes 增 /system/auth/login + ResolveLogin 密文优先;admin loginApi 恒提交 {username 明文, encryptedKey, encryptedData} + 拦截器豁免 /auth/login。全量模式 5 项 + dev 15 项 E2E 通过。提交 service 70cb861 / admin f70f5dc。