# 架构决策:微信出站调用敏感日志边界 > 日期: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 仍须在生产前轮换并由受控环境变量提供;本变更不读取、生成或验证真实凭据。