ZHENGJIM.COM / SECURITY OBSERVATIONS最新发布 2026-11-02 RSS ↗

链接与编码

?、# 与重复参数:一条 URL 的三个坑

用真实示例理解 URL 查询字符串、fragment、重复参数和百分号编码,排查链接与统计问题。

先看一条完整链接

以 https://example.com/search?q=站点&q=SEO&utm_source=notes#results 为例:/search 是路径,? 后是查询字符串,#results 是 fragment。同名的 q 出现了两次,读取哪一个值取决于应用。

# 后的内容不会随 HTTP 请求发送

fragment 由浏览器处理,常用于页内定位和前端路由。服务器通常收到 /search?q=...,看不到 #results。把认证信息放在 fragment 里也不能保证安全,因为页面脚本仍可能读到它。

重复参数不总是错误

有的接口允许 tag=a&tag=b 表示多个标签,有的框架会取首个或末个值。排查时保留参数顺序,结合服务端解析逻辑确认。把重复参数武断删除,可能改变业务结果。

百分号编码与加号

URLSearchParams 按表单风格解析查询字符串,因此 + 会被读成空格,%2B 才是字面加号。%26 表示参数值内的 &;直接把它替换成 &,就可能把一个值拆成两个参数。不要对整条 URL 盲目多次解码。

分享前先检查敏感字段

token、password、secret、api_key 等字段以及 user:password@host 可能暴露凭证。工具会提示常见名称,但不能发现所有业务敏感信息。分享排障结果前主动脱敏;不要把真实凭证放进截图或公开工单。

原始资料

由 AI 整理。原有工具具备自动化用例,具体站点结论仍需实际证据。