Go 1.13.1 和 Go 1.12.10 发布了,修复了一个安全问题,如下:
net/http (通过 net/textproto)接受无效的 HTTP/1.1 标头并将其标准化,在冒号前会出现空格,违反了 RFC 7230。
如果一个 Go 服务器在一个不常见的反向代理后面使用,该代理接受并转发这些无效的报头,却不对这些无效报头进行规范化,反向代理和服务器就会互不相同地解释这些报头。这可能导致过滤旁路或请求漏洞( request smuggling),如果来自不同客户端的请求被代理多路复用到相同的上游连接上,则导致请求漏洞。这些无效的报头现在被 Go 服务器拒绝,并且在没有规范化的情况下传递给 Go 客户端应用程序。
查看发布说明以了解更多信息:
https://groups.google.com/forum/m/#!topic/golang-announce/cszieYyuL9Q
(文/开源中国)