Go HTML 템플릿의 "ZgotmplZ" 이해
Go HTML 템플릿으로 작업할 때 수수께끼 같은 문자열 "ZgotmplZ"가 출력될 수 있습니다. . 이 독특한 값은 주의를 요하는 특별한 의미를 갖습니다.
ZgotmplZ가 나타나는 이유
"ZgotmplZ"는 잠재적으로 안전하지 않은 콘텐츠가 런타임 중에 CSS 또는 URL 컨텍스트에 들어갈 때 나타납니다. 이는 HTML이 CSS 또는 URL 속성에 직접 삽입될 때 발생하며, 이로 인해 보안 취약점이 발생할 수 있습니다. 이러한 위험으로부터 보호하기 위해 템플릿 엔진은 "ZgotmplZ"를 자리 표시자로 삽입하여 안전하지 않은 콘텐츠가 실행되는 것을 방지합니다.
샘플 예
다음 템플릿을 고려하세요. 코드:
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) }
이 템플릿이 실행되면 출력:
<option ZgotmplZ ZgotmplZ >test</option>
템플릿 출력 보안
템플릿 출력의 안전을 보장하려면 "funcMap"을 활용하여 "attr" 및 "safe"를 구현할 수 있습니다. " 함수:
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>`, }) }
이 수정된 코드는 다음과 같은 결과를 가져옵니다. 출력:
<option selected="selected">test</option> <option selected="selected">option</option>
결론
"ZgotmplZ"의 의미를 이해하고 "attr" 및 "safe" 기능을 구현함으로써 Go를 보장할 수 있습니다. HTML 템플릿은 안전하고 안전한 출력을 생성하여 취약점의 위험을 최소화하고 애플리케이션의 무결성을 유지합니다.
위 내용은 My Go HTML 템플릿이 'ZgotmplZ'를 출력하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!