敏感参数泄露源于日志采集环节未脱敏,需在console、监控sdk、埋点上报等日志源头对url(过滤query参数)、headers(剔除authorization等)、body(掩码password等字段)做针对性脱敏,并避免错误捕获时打印完整response或error.stack。

fetch 本身不记录日志,敏感参数泄露通常发生在你主动将请求信息(如 URL、headers、body)打印到控制台、上报监控系统或写入本地日志时。关键不是“fetch 过滤”,而是**在日志采集环节脱敏**。
明确日志来源,只在必要位置做脱敏
浏览器控制台 console.log(req)、前端监控 SDK(如 Sentry、Bugsnag)、自建埋点上报、甚至开发环境的请求拦截器(如 Charles/Fiddler 的日志面板),都可能暴露敏感字段。先确认你的日志从哪来,再针对性处理。
对 URL 中的 query 参数做脱敏
如果敏感信息通过 URL 传递(如 ?token=abc&userId=123),直接打印完整 URL 就会泄露。建议:
详细的 Three.js 3D 图形参考,涵盖场景设置、相机、几何体、材质、光照、动画、控制器、加载器、数学工具和调试。
- 用 URL API 解析后手动过滤:提取 searchParams,删除或掩码指定键名(如
token、auth、code) - 日志中只保留脱敏后的 URL:
url.origin + url.pathname + cleanSearch - 示例:
function sanitizeUrl(urlStr) { const url = new URL(urlStr); ['token', 'auth', 'code', 'sig'].forEach(key => url.searchParams.delete(key)); return url.origin + url.pathname + url.search; }
对 headers 和 body 做选择性日志
不要直接 console.log({ headers, body })。应:
-
headers:仅记录非敏感头(如
Content-Type),过滤Authorization、Cookie、X-Api-Key等 -
body:如果是 JSON,用
JSON.parse(JSON.stringify(body))深拷贝后递归删除/掩码敏感字段(如password、idCard、mobile);如果是 FormData,需遍历 key-value 处理 - 推荐封装一个
safeLogRequest(req)工具函数,统一管控脱敏逻辑
避免在错误捕获中意外泄露
fetch 报错时,很多人会把整个 error 或 response 对象打出来,而 response.url 或 response.headers 可能含敏感信息。建议:
- 错误日志只记录状态码、简短消息、请求方法和路径(不含 query)
- 禁用
response.clone().json()后全量打印 —— 这个操作本身也可能触发敏感数据解析 - 对 error.stack 做简单清洗,防止 URL 被包含在堆栈字符串里
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










