大家好,我是站长 polarisxu。
今早,Go 官方发布了 Go1.21.5 和 Go1.20.12,这是两个小版本,主要是安全更新。
- net/http:限制分块数据开销
恶意 HTTP 发送方可以使用块扩展来导致,接收方从网络的请求或响应正文中读取比正文中更多的字节。
恶意 HTTP 客户端可以进一步利用这一点,当处理程序无法读取整个请求正文时,导致服务器自动读取大量数据(最多约 1GiB)。
块扩展是一个很少使用的 HTTP 功能,它允许在使用块编码发送的请求或响应正文中包含额外的元数据。net/http 块编码读取器丢弃此元数据。发送方可以通过插入一个大的元数据段来利用这一点。如果实际正文与编码字节的比例变得太小,块读取器现在会产生错误。详细 issue 见 <https://go.dev/issue/64433>。
- cmd/go: go get 可能会意外回退到不安全的 git
使用 go get 获取带有 “. git” 后缀的模块可能会意外回退到不安全 git;如果模块通过安全模块不可用,则使用不安全的 “git://” 协议
来代替 “https://” 和 “git+ssh://” 协议,即使没有为上述设置 GOINSECURE。这仅影响未使用模块代理而直接获取模块的用户(即GOPROXY=off)。详细 issue 见 <https://go.dev/issue/63845>。
- path/filepath: 清理路径时保留尾随 `\`,例如: `\\?\c:\`
Go1.20.11 和 Go1.21.4 无意中更改了以 `\\?\` 开头的 Windows 路径中卷名的定义,导致 ` filepath.Clean(\\?\c:\) ` 返回 `\\?\c` 而不是 `\\?\c:\ `(以及其他效果)。以前的行为已经恢复。详细 issue 见 <https://go.dev/issue/64028>。
修复一个 Bug 引入新的 Bug~
Go 语言中文网为你准备了最新包,下载地址:https://studygolang.com/dl 。