petstore-docs/架构决策-微信出站调用敏感日志边界-2026-08-02.md

23 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 架构决策:微信出站调用敏感日志边界
> 日期2026-08-02
> 决策:微信接口异常只记录低敏诊断维度,不记录请求/响应原文
> 本体:`rule:BR-AUTH-003`
## 背景
`jscode2session`、`getuserphonenumber` 和 `access_token` 都涉及一次性 code、openid、手机号或 AppSecret。原异常分支曾把微信完整响应体或原始手机号写入日志并把 `Exception#getMessage()` 拼入客户端错误文案。网络异常消息可能包含含 query 的请求 URI从而间接暴露 AppSecret、access_token 或一次性 code完整微信响应也可能包含手机号。
## 决策
1. 微信出站日志只允许 HTTP 状态码、微信数值错误码和 Java 异常类型。
2. 禁止把完整响应体、手机号、openid/unionid、access_token、AppSecret、`phoneCode/jsCode`、含 query 的 URL 或异常消息作为日志参数。
3. 网络或解析异常返回固定低敏文案;微信明确返回的业务错误仍可通过受控 `errcode` 映射成可理解提示。
4. `SensitiveLoggingContractTest` 扫描微信服务及相邻的身份、session、邀请和上传边界阻止敏感变量、外部错误文案、异常消息或完整异常重新成为日志参数并禁止把异常消息拼入客户端响应。
## 边界
- 该决策不降低线上可观测性HTTP 状态、微信错误码、异常类型和现有请求级 trace 足以定位网络、凭据和 code 生命周期问题。
- 运维排障不得临时打开完整 HTTP body 或 query 日志。确需与微信支持协查时,只记录时间窗、匿名化请求关联和错误码。
- 微信真实 AppID/AppSecret 仍须在生产前轮换并由受控环境变量提供;本变更不读取、生成或验证真实凭据。