Maison >développement back-end >Golang >Pourquoi mon modèle HTML Go affiche-t-il « ZgotmplZ » ?
Comprendre "ZgotmplZ" dans les modèles Go HTML
Lorsque vous travaillez avec des modèles Go HTML, vous pouvez rencontrer la chaîne énigmatique "ZgotmplZ" en sortie . Cette valeur particulière a une signification spécifique qui exige de l'attention.
Pourquoi ZgotmplZ apparaît
"ZgotmplZ" apparaît lorsqu'un contenu potentiellement dangereux entre dans un contexte CSS ou URL pendant l'exécution. Cela se produit lorsque le HTML est intégré directement dans les attributs CSS ou URL, ce qui peut introduire des failles de sécurité. Pour se protéger contre ces risques, le moteur de modèles insère "ZgotmplZ" comme espace réservé, empêchant ainsi l'exécution du contenu dangereux.
Un exemple d'exemple
Considérez le modèle suivant 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) }
Une fois exécuté, ce modèle produit le sortie :
<option ZgotmplZ ZgotmplZ >test</option>
Sécurisation de la sortie du modèle
Pour garantir la sécurité de la sortie de votre modèle, vous pouvez utiliser "funcMap" pour implémenter les paramètres "attr" et "safe "fonctions :
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>`, }) }
Ce code modifié entraîne ce qui suit sortie :
<option selected="selected">test</option> <option selected="selected">option</option>
Conclusion
En comprenant la signification de "ZgotmplZ" et en implémentant les fonctions "attr" et "safe", vous pouvez vous assurer que votre Go Les modèles HTML produisent une sortie sûre et sécurisée, minimisant le risque de vulnérabilités et préservant l'intégrité de vos applications.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!