#2502·go2rtc

源查询字符串中的凭据在 /api/streams 或日志中没有被掩藏

作者: ajplotkin创建于 2026年9月15日更新于 2026年9月15日

#1744 将 `env:`/`${VAR}`/CREDENTIALS_DIRECTORY 中的值进行了掩码处理, #2051 从 `/api/streams` 和日志输出中删除了 `://user:pass@` 用户信息, 这两者都不包括查询字符串中字面写入的凭证, 这是多个源中传递它们的方式: - `nest:?client_id=&client_secret=&refresh_token=`, - `ring:?refresh_token=` / `password=`, - `tuya: client_secret=` / `password=`, - `hass: token=`, `webtorrent: pwd=`, `roborock: key=`, xiaomi 旧版 `password=`, `Connection.URL` 来自后端的原始源字符串(`pkg/nest/client.go:120`, `pkg/rtsp/client.go:78`, `internal/http/http.go:57`, `internal/exec/exec.go:276`)并进行了无过滤的序列化(`pkg/webrtc/conn.go:150`, `pkg/rtsp/producer.go:112`). `creds.SecretResponse` 在 `internal/streams/api.go:14` 中包装了写入器, 但替换器只知道已注册的值, 用户信息正则表达式不匹配 `?key=value`. 同一字符串通过 `log.Warn().Err(err).Str("url", p.url)` 在 `internal/streams/producer.go:170` 中传递到日志中, 在默认 `info` 级别下, 每个 `Start()` 错误都会出现, 在 Debug/Trace 级别下, 在第 152、181、185 和 260 行出现。