大家好,我是站长 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。
你也可以使用官方的方式更新使用:
推荐阅读