我正在使用Go html / template包来呈现从HTML表单收到的用户输入。由于包html /模板阻止了用户输入的脚本注入,所有的html标签都将被转换为& ...;格式。
但是,我打算使用WYSIWYG输入字段,允许用户输入一些样式标记,例如<强大>标签。我正在使用模板功能解决方案。
funcs := template.FuncMap{
"marktag": func(text string) template.HTML {
output := strings.Replace(template.HTMLEscapeString(text), "<strong>", "<strong>", -1)
output = strings.Replace(output, "</strong>", "</strong>", -1)
return template.HTML(output)
},
}
哪个有效。但是,如果我需要转换其他标签,我必须多次调用strings.Replace(..)函数,例如
<ul><li></li></ul>
<emphasize></emphasize>
<code></code>
等等
此外,我发现很难处理像
这样的CSS风格<p style="color: #343434"></p>
现在我必须检查
<p
也是。这个问题有没有理想的解决方案?