大家好,我们劳动节放假期间,Go 官方又发布新版本了。这次的版本更新依然是安全更新,同样是两个版本:Go1.20.4 和 Go1.19.9。主要包含 3 个安全更新,都是 html/template 包的。
html/template: CSS 值的不正确清理
插入 CSS 上下文时,尖括号 (<>) 不被视为危险字符。如果使用不受信任的输入执行,包含由 “/” 字符分隔的多个操作的模板可能会导致意外关闭 CSS 上下文并允许注入意外的 HMTL。
issue 详见:https://go.dev/issue/59720
html/template: JavaScript 空格处理不当
并非所有有效的 JavaScript 空白字符都被视为空白。在还包含操作的 JavaScript 上下文中,包含字符集“\t\n\f\r\u0020\u2028\u2029”之外的空白字符的模板在执行期间可能无法正确清理。
issue 详见:https://go.dev/issue/59721
html/template: 对空 HTML 属性的不当处理
由于 HTML 规范化规则,使用空输入执行的未加引号的 HTML 属性(例如“attr={{.}}”)中包含操作的模板可能会导致在解析时产生意外结果的输出。这可能允许将任意属性注入到标签中。
issue 详见:https://go.dev/issue/59722
如果你使用了 html/template 包,建议进行升级。
可以使用官方推荐的方式升级,也可以用你喜欢的方式升级,亦或到 Go语言中文网 https://studygolang.com/dl 下载最新的包。