用户把文章链接转发到群里,链接后面带着 uid=100238 和 mobile=138****,任何人点开都能看到这串参数。日志里能对上时间点,这种反而好排。
分享按钮直接复制 location.href,而页面地址本来就是带用户标识进来的,没有做参数清洗。复制逻辑只判断了长度,没区分哪些参数可以公开。这一点先确认清楚,后面就不用反复试。
const keep = ['utm_source','utm_medium','utm_campaign'];
const u = new URL(location.href);
[...u.searchParams.keys()].forEach(k => { if (!keep.includes(k)) u.searchParams.delete(k); });
这次卡住的地方就在「分享链接隐私参数」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。偶发问题先统计频率,一小时几次和一天一次,查法完全不同。
改完顺手把文档补一句,省得下次自己重新推一遍。监控和日志的时间要对上,时区不一致会多绕很大一圈。
处理上按这个顺序:复制前用白名单只保留 utm 系列 其余参数全删;服务端生成分享短链 用户标识只存在映射表;页面加载时自检 发现敏感参数就改写地址栏。
结果对不对很好判断,复制出的链接只剩三个 utm 参数,uid 和手机号在分享链接里查不到。
