Verstehen von „ZgotmplZ“ in Go-HTML-Vorlagen
Beim Arbeiten mit Go-HTML-Vorlagen kann es sein, dass Sie als Ausgabe auf die rätselhafte Zeichenfolge „ZgotmplZ“ stoßen . Dieser besondere Wert hat eine spezifische Bedeutung, die Aufmerksamkeit erfordert.
Warum ZgotmplZ erscheint
„ZgotmplZ“ erscheint, wenn potenziell unsicherer Inhalt während der Laufzeit in einen CSS- oder URL-Kontext gelangt. Dies tritt auf, wenn HTML direkt in CSS- oder URL-Attribute eingebettet wird, was zu Sicherheitslücken führen kann. Zum Schutz vor diesen Risiken fügt die Template-Engine „ZgotmplZ“ als Platzhalter ein und verhindert so die Ausführung unsicherer Inhalte.
Ein Beispielbeispiel
Beachten Sie die folgende Vorlage Code:
func printSelected(s string) string { if s == "test" { return `selected="selected"` } return "" } func main() { funcMap := template.FuncMap{ "printSelected": printSelected, "safe": func(s string) template.HTML { return template.HTML(s) }, } template.Must(template.New("Template").Funcs(funcMap).Parse(` <option {{ printSelected "test" }} {{ printSelected "test" | safe }} >test</option> `)).Execute(os.Stdout, nil) }
Bei der Ausführung erzeugt diese Vorlage das Ausgabe:
<option ZgotmplZ ZgotmplZ >test</option>
Sichern der Vorlagenausgabe
Um die Sicherheit Ihrer Vorlagenausgabe zu gewährleisten, können Sie „funcMap“ verwenden, um „attr“ und „safe“ zu implementieren " Funktionen:
func attr(s string) template.HTMLAttr { return template.HTMLAttr(s) } func main() { funcMap := template.FuncMap{ "attr": attr, "safe": func(s string) template.HTML { return template.HTML(s) }, } template.Must(template.New("Template").Funcs(funcMap).Parse(` <option {{.attr | attr}}>test</option> {{.html | safe}} `)).Execute(os.Stdout, map[string]string{ "attr": `selected="selected"`, "html": `<option selected="selected">option</option>`, }) }
Dieser geänderte Code führt zu Folgendem Ausgabe:
<option selected="selected">test</option> <option selected="selected">option</option>
Fazit
Indem Sie die Bedeutung von „ZgotmplZ“ verstehen und die Funktionen „attr“ und „safe“ implementieren, können Sie sicherstellen, dass Ihr Go HTML-Vorlagen erzeugen eine sichere Ausgabe, minimieren das Risiko von Schwachstellen und wahren die Integrität Ihrer Anwendungen.
Das obige ist der detaillierte Inhalt vonWarum gibt meine Go-HTML-Vorlage „ZgotmplZ' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!