Go 1.20.4 主要修复了html/template包的三个安全问题。
html/template包用途
html/template包提供了一种将Go语言代码与HTML模板相结合的方法,可以动态生成HTML页面。
修复的三个安全问题
- 对CSS值处理不当 (CVE-2023-24539),当插入到CSS上下文中时,尖括号 (<>) 被认为是非危险字符。解析包含由 '/' 分隔的并且有多个操作的模板时可能导致CSS上下文被关闭,如果对输入没有做严格校验,有HTML代码注入风险。
- 对JavaScript空格处理不当 (CVE-2023-24540),并非所有有效的JavaScript空白字符都被认为是空白。在JavaScript上下文中,包含字符集 "\t\n\f\r\u0020\u2028\u2029" 之外的空白字符的模板,在执行期间可能无法去除空白字符。
- 对HTML空属性处理不当 (CVE-2023-29400),html模版中,未加引号的属性中包含了actions (例如:"attr={{.}}") 的话,在空输入下执行可能会导致解析异常。