build-web-application-with-golang
build-web-application-with-golang copied to clipboard
中文版 4.3 预防跨站脚本
原文如下: Go的html/template包默认帮你过滤了html标签,但是有时候你只想要输出这个看起来正常的信息,该怎么处理?请使用text/template。请看下面的例子:
import "text/template"
...
t, err := template.New("foo").Parse(`{{define "T"}}Hello, {{.}}!{{end}}`)
err = t.ExecuteTemplate(out, "T", "<script>alert('you have been pwned')</script>")
输出 Hello, !
我的实验结果是
Hello, <script>alert('you have been pwned')</script>!
t.ExecuteTemplate(out, "T", template.HTML(""))
才能输出
Hello, <script>alert('you have been pwned')</script>!
你用的是text/template吗?
@unix2dos template.HTML 是 html/template 才有的方法,我觉得你应该是用的html/template而不是text/template