chore: 登录仅密码加密改造(日志)
This commit is contained in:
parent
d7086382f7
commit
1b82fd1771
@ -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 | 登录密码「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 | 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。
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user