#120425·ClickHouse

在 HTTP 错误消息和调试日志中逐字复制了 URL userinfo 密码

作者: clickgapai创建于 2026年9月16日更新于 2026年9月17日
标签comp-table-functions
分析细节(证据、受影响的位置、影响)

为什么我们认为这是一个 bug:读取器执行 `SELECT * FROM .''` -> `DatabaseURL::getTableImpl` ([`src/Databases/DatabaseURL.cpp:351`](https://GitHub.com/ClickHouse/ClickHouse/blob/44a2a51a4ce0/src/Databases/DatabaseURL.cpp#L351)) 将其解析为 `url('')`,用户信息完整 -> `ReadWriteBufferFromHTTP::callImpl` -> `assertResponseIsOk(current_uri.toString(), ...)` ([`src/IO/ReadWriteBufferFromHTTP.cpp:279`](https://GitHub.com/ClickHouse/ClickHouse/blob/44a2a51a4ce0/src/IO/ReadWriteBufferFromHTTP.cpp#L279)) 将 `Poco::URI::toString()` 渲染为异常消息,其中包含 `user:password@`。`setCredentialsFromURL` ([`src/IO/ReadWriteBufferFromHTTP.cpp:873-891`](https://GitHub.com/ClickHouse/ClickHouse/blob/44a2a51a4ce0/src/IO/ReadWriteBufferFromHTTP.cpp#L873-L891)) 将用户信息拷贝到 `Poco::Net::HTTPBasicCredentials`,因此它解析的 URI 从来没有从 URI 中删除用户信息,因此之后渲染该 URI 都会带有密码。

受影响的位置:

  • [`src/IO/ReadWriteBufferFromHTTP.cpp:279`](https://GitHub.com/ClickHouse/ClickHouse/blob/44a2a51a4ce0/src/IO/ReadWriteBufferFromHTTP.cpp#L279) — assertResponseIsOk(current_uri.toString(), ...) — 任何非 2xx 响应,用户面临的异常(已证实)
  • [`src/IO/ReadWriteBufferFromHTTP.cpp:166`](https://GitHub.com/ClickHouse/ClickHouse/blob/44a2a51a4ce0/src/IO/ReadWriteBufferFromHTTP.cpp#L166) — getFileName() 返回 initial_uri.toString(); IInputFormat 将其作为 `(in file/uri ...)` 附加(已证实)

内容来源: ClickHouse/ClickHouse